76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"reflect"
|
|
"runtime/debug"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
// print results from CLI command
|
|
func printCmdResults(ok []string, failures map[string]error) error {
|
|
for _, id := range ok {
|
|
fmt.Println(id)
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
keys := reflect.ValueOf(failures).MapKeys()
|
|
lastKey := keys[len(keys)-1].String()
|
|
lastErr := failures[lastKey]
|
|
delete(failures, lastKey)
|
|
|
|
for _, err := range failures {
|
|
outputError(err)
|
|
}
|
|
return lastErr
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// markFlagHiddenForRemoteClient makes the flag not appear as part of the CLI
|
|
// on the remote-client
|
|
func markFlagHiddenForRemoteClient(flagName string, flags *pflag.FlagSet) {
|
|
if remoteclient {
|
|
if err := flags.MarkHidden(flagName); err != nil {
|
|
debug.PrintStack()
|
|
logrus.Errorf("unable to mark %s as hidden in the remote-client", flagName)
|
|
}
|
|
}
|
|
}
|
|
|
|
// markFlagHidden is a helper function to log an error if marking
|
|
// a flag as hidden happens to fail
|
|
func markFlagHidden(flags *pflag.FlagSet, flag string) {
|
|
if err := flags.MarkHidden(flag); err != nil {
|
|
logrus.Errorf("unable to mark flag '%s' as hidden: %q", flag, err)
|
|
}
|
|
}
|
|
|
|
func aliasFlags(f *pflag.FlagSet, name string) pflag.NormalizedName {
|
|
switch name {
|
|
case "healthcheck-command":
|
|
name = "health-cmd"
|
|
case "healthcheck-interval":
|
|
name = "health-interval"
|
|
case "healthcheck-retries":
|
|
name = "health-retries"
|
|
case "healthcheck-start-period":
|
|
name = "health-start-period"
|
|
case "healthcheck-timeout":
|
|
name = "health-timeout"
|
|
}
|
|
return pflag.NormalizedName(name)
|
|
}
|
|
|
|
// Check if a file exists and is not a directory
|
|
func checkIfFileExists(name string) bool {
|
|
file, err := os.Stat(name)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
return !file.IsDir()
|
|
}
|