2022-09-21 09:51:26 +00:00
//
// DISCLAIMER
//
2024-03-18 11:12:09 +00:00
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
2022-09-21 09:51:26 +00:00
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
package cmd
import (
"compress/gzip"
2022-12-11 21:09:15 +00:00
"io"
2022-09-21 09:51:26 +00:00
"os"
"github.com/spf13/cobra"
"github.com/arangodb/kube-arangodb/pkg/debug_package"
)
func init ( ) {
cmdMain . AddCommand ( debugPackage )
2024-03-18 11:12:09 +00:00
cmdMain . AddCommand ( debugPackageV2 )
2022-09-21 09:51:26 +00:00
2024-11-25 12:55:43 +00:00
cmdOps . AddCommand ( debugPackage )
cmdOps . AddCommand ( debugPackageV2 )
2024-03-18 11:12:09 +00:00
debugPackage . Flags ( ) . StringVarP ( & debugPackageInput . Output , "output" , "o" , "out.tar.gz" , "Output of the result gz file. If set to `-` then stdout is used" )
debugPackageV2 . Flags ( ) . StringVarP ( & debugPackageInput . Output , "output" , "o" , "out.tar.gz" , "Output of the result gz file. If set to `-` then stdout is used" )
2022-11-04 16:39:40 +00:00
2022-09-21 09:51:26 +00:00
debug_package . InitCommand ( debugPackage )
2024-03-18 11:12:09 +00:00
debug_package . InitCommand ( debugPackageV2 )
2022-09-21 09:51:26 +00:00
}
var debugPackage = & cobra . Command {
2024-03-18 11:12:09 +00:00
Use : "debugPackage" ,
Short : "Generate debug package for debugging" ,
RunE : debugPackageFunc ,
Hidden : true ,
Deprecated : "Use debug-package command instead" ,
}
var debugPackageV2 = & cobra . Command {
Use : "debug-package" ,
2023-08-25 10:28:56 +00:00
Short : "Generate debug package for debugging" ,
2022-09-21 09:51:26 +00:00
RunE : debugPackageFunc ,
}
2022-11-04 16:39:40 +00:00
var debugPackageInput struct {
Output string
}
2022-09-21 09:51:26 +00:00
func debugPackageFunc ( cmd * cobra . Command , _ [ ] string ) error {
2022-12-11 21:09:15 +00:00
if debugPackageInput . Output == "-" {
return debugPackageStdOut ( cmd )
2022-09-21 09:51:26 +00:00
}
2022-12-11 21:09:15 +00:00
return debugPackageFile ( cmd )
}
2022-09-21 09:51:26 +00:00
2022-12-11 21:09:15 +00:00
func debugPackageStdOut ( cmd * cobra . Command ) ( returnError error ) {
return debugPackageGZip ( cmd , os . Stdout )
}
2022-09-21 09:51:26 +00:00
2022-12-11 21:09:15 +00:00
func debugPackageFile ( cmd * cobra . Command ) ( returnError error ) {
2023-08-25 10:28:56 +00:00
out , err := os . OpenFile ( debugPackageInput . Output , os . O_TRUNC | os . O_WRONLY | os . O_CREATE , 0644 )
2022-12-11 21:09:15 +00:00
if err != nil {
2022-09-21 09:51:26 +00:00
return err
}
2022-12-11 21:09:15 +00:00
defer func ( ) {
2022-11-04 16:39:40 +00:00
if err := out . Close ( ) ; err != nil {
2022-12-11 21:09:15 +00:00
if returnError == nil {
returnError = err
}
2022-11-04 16:39:40 +00:00
}
2022-12-11 21:09:15 +00:00
} ( )
return debugPackageGZip ( cmd , out )
}
func debugPackageGZip ( cmd * cobra . Command , out io . Writer ) ( returnError error ) {
gw := gzip . NewWriter ( out )
defer func ( ) {
if err := gw . Close ( ) ; err != nil {
if returnError == nil {
returnError = err
}
}
} ( )
return debugPackageRaw ( cmd , gw )
}
2022-09-21 09:51:26 +00:00
2022-12-11 21:09:15 +00:00
func debugPackageRaw ( cmd * cobra . Command , gw io . Writer ) error {
return debug_package . GenerateD ( cmd , gw )
2022-09-21 09:51:26 +00:00
}