2021-07-24 16:14:29 +02:00
package cmd
import (
"fmt"
2021-09-07 09:53:18 +02:00
"github.com/spf13/cobra"
2021-07-24 16:14:29 +02:00
"os"
"os/signal"
"runtime"
)
const (
// ExitSetupFailed defines exit code
ExitSetupFailed = 1
)
var (
configPath string
defaultConfigPath string
logLevel string
2021-09-07 09:53:18 +02:00
defaultLogFile string
logFile string
2021-07-24 16:14:29 +02:00
rootCmd = & cobra . Command {
2021-07-31 12:33:04 +02:00
Use : "wiretrustee-mgmt" ,
2021-07-24 16:14:29 +02:00
Short : "" ,
Long : "" ,
}
// Execution control channel for stopCh signal
stopCh chan int
)
// Execute executes the root command.
func Execute ( ) error {
return rootCmd . Execute ( )
}
func init ( ) {
stopCh = make ( chan int )
2021-09-03 17:47:40 +02:00
defaultConfigPath = "/etc/wiretrustee/management.json"
2021-09-07 09:53:18 +02:00
defaultLogFile = "/var/log/wiretrustee/management.log"
2021-07-24 16:14:29 +02:00
if runtime . GOOS == "windows" {
2021-09-07 09:53:18 +02:00
defaultConfigPath = os . Getenv ( "PROGRAMDATA" ) + "\\Wiretrustee\\" + "management.json"
defaultLogFile = os . Getenv ( "PROGRAMDATA" ) + "\\Wiretrustee\\" + "management.log"
2021-07-24 16:14:29 +02:00
}
rootCmd . PersistentFlags ( ) . StringVar ( & configPath , "config" , defaultConfigPath , "Wiretrustee config file location to write new config to" )
rootCmd . PersistentFlags ( ) . StringVar ( & logLevel , "log-level" , "info" , "" )
2021-09-07 09:53:18 +02:00
rootCmd . PersistentFlags ( ) . StringVar ( & logFile , "log-file" , defaultLogFile , "sets Wiretrustee log path. If console is specified the the log will be output to stdout" )
2021-07-24 16:14:29 +02:00
rootCmd . AddCommand ( mgmtCmd )
}
// SetupCloseHandler handles SIGTERM signal and exits with success
func SetupCloseHandler ( ) {
c := make ( chan os . Signal , 1 )
signal . Notify ( c , os . Interrupt )
go func ( ) {
for range c {
fmt . Println ( "\r- Ctrl+C pressed in Terminal" )
stopCh <- 0
}
} ( )
}