From b6b88ff6a638b96b04714e6934d2ab6128f46d13 Mon Sep 17 00:00:00 2001 From: "Harper, Jason M" Date: Wed, 17 Dec 2025 11:35:07 -0800 Subject: [PATCH] Refactor flag names to use constants in benchmark, restore, root, telemetry, and targets commands Signed-off-by: Harper, Jason M --- cmd/benchmark/benchmark.go | 2 +- cmd/config/restore.go | 4 ++-- cmd/root.go | 21 +++++------------ cmd/telemetry/telemetry.go | 10 +------- internal/common/common.go | 10 ++++++++ internal/common/targets.go | 48 +++++++++++++++++++------------------- 6 files changed, 44 insertions(+), 51 deletions(-) diff --git a/cmd/benchmark/benchmark.go b/cmd/benchmark/benchmark.go index ebde491b..99076f4a 100644 --- a/cmd/benchmark/benchmark.go +++ b/cmd/benchmark/benchmark.go @@ -206,7 +206,7 @@ func validateFlags(cmd *cobra.Command, args []string) error { return common.FlagValidationError(cmd, fmt.Sprintf("invalid storage directory name: %s", flagStorageDir)) } // if no target is specified, i.e., we have a local target only, check if the directory exists - if !cmd.Flags().Lookup("targets").Changed && !cmd.Flags().Lookup("target").Changed { + if !cmd.Flags().Lookup(common.FlagTargetsFileName).Changed && !cmd.Flags().Lookup(common.FlagTargetHostName).Changed { if _, err := os.Stat(flagStorageDir); os.IsNotExist(err) { return common.FlagValidationError(cmd, fmt.Sprintf("storage dir does not exist: %s", flagStorageDir)) } diff --git a/cmd/config/restore.go b/cmd/config/restore.go index b6b41035..43f12345 100644 --- a/cmd/config/restore.go +++ b/cmd/config/restore.go @@ -157,7 +157,7 @@ func runRestoreCmd(cmd *cobra.Command, args []string) error { cmdArgs := []string{"config"} // copy target flags from restore command first - targetFlags := []string{"target", "targets", "user", "key", "port"} + targetFlags := []string{common.FlagTargetHostName, common.FlagTargetsFileName, common.FlagTargetUserName, common.FlagTargetKeyName, common.FlagTargetPortName} for _, flagName := range targetFlags { if flag := cmd.Flags().Lookup(flagName); flag != nil && flag.Changed { cmdArgs = append(cmdArgs, fmt.Sprintf("--%s", flagName), flag.Value.String()) @@ -165,7 +165,7 @@ func runRestoreCmd(cmd *cobra.Command, args []string) error { } // copy relevant global flags from root command next - globalFlags := []string{"debug", "output", "tempdir", "syslog", "log-stdout"} + globalFlags := []string{common.FlagDebugName, common.FlagOutputDirName, common.FlagTargetTempRootName, common.FlagSyslogName, common.FlagLogStdOutName} for _, flagName := range globalFlags { if flag := cmd.Root().PersistentFlags().Lookup(flagName); flag != nil && flag.Changed { if flag.Value.Type() == "bool" { diff --git a/cmd/root.go b/cmd/root.go index 66f8461e..659659f3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -74,15 +74,6 @@ var ( flagNoCheckUpdate bool ) -const ( - flagDebugName = "debug" - flagSyslogName = "syslog" - flagLogStdOutName = "log-stdout" - flagOutputDirName = "output" - flagTargetTempRootName = "tempdir" - flagNoCheckUpdateName = "noupdate" -) - func init() { rootCmd.SetUsageTemplate(`Usage:{{if .Runnable}} {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}} @@ -124,12 +115,12 @@ Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}} rootCmd.AddGroup([]*cobra.Group{{ID: "other", Title: "Other Commands:"}}...) rootCmd.AddCommand(updateCmd) // Global (persistent) flags - rootCmd.PersistentFlags().BoolVar(&flagDebug, flagDebugName, false, "enable debug logging and retain temporary directories") - rootCmd.PersistentFlags().BoolVar(&flagSyslog, flagSyslogName, false, "write logs to syslog instead of a file") - rootCmd.PersistentFlags().BoolVar(&flagLogStdOut, flagLogStdOutName, false, "write logs to stdout") - rootCmd.PersistentFlags().StringVar(&flagOutputDir, flagOutputDirName, "", "override the output directory") - rootCmd.PersistentFlags().StringVar(&flagTargetTempRoot, flagTargetTempRootName, "", "override the temporary target directory, must exist and allow execution") - rootCmd.PersistentFlags().BoolVar(&flagNoCheckUpdate, flagNoCheckUpdateName, false, "skip application update check") + rootCmd.PersistentFlags().BoolVar(&flagDebug, common.FlagDebugName, false, "enable debug logging and retain temporary directories") + rootCmd.PersistentFlags().BoolVar(&flagSyslog, common.FlagSyslogName, false, "write logs to syslog instead of a file") + rootCmd.PersistentFlags().BoolVar(&flagLogStdOut, common.FlagLogStdOutName, false, "write logs to stdout") + rootCmd.PersistentFlags().StringVar(&flagOutputDir, common.FlagOutputDirName, "", "override the output directory") + rootCmd.PersistentFlags().StringVar(&flagTargetTempRoot, common.FlagTargetTempRootName, "", "override the temporary target directory, must exist and allow execution") + rootCmd.PersistentFlags().BoolVar(&flagNoCheckUpdate, common.FlagNoCheckUpdateName, false, "skip application update check") } // Execute adds all child commands to the root command and sets flags appropriately. diff --git a/cmd/telemetry/telemetry.go b/cmd/telemetry/telemetry.go index 56f8edfe..ce89a579 100644 --- a/cmd/telemetry/telemetry.go +++ b/cmd/telemetry/telemetry.go @@ -244,15 +244,7 @@ func validateFlags(cmd *cobra.Command, args []string) error { if flagDuration < 0 { return common.FlagValidationError(cmd, "duration must be 0 or greater") } - target, err := cmd.Flags().GetString("target") - if err != nil { - panic("failed to get target flag") - } - targets, err := cmd.Flags().GetString("targets") - if err != nil { - panic("failed to get targets flag") - } - if flagDuration == 0 && (target != "" || targets != "") { + if flagDuration == 0 && (cmd.Flags().Lookup(common.FlagTargetsFileName).Changed || cmd.Flags().Lookup(common.FlagTargetHostName).Changed) { return common.FlagValidationError(cmd, "duration must be greater than 0 when collecting from a remote target") } if flagInstrMixFrequency < 100000 { // 100,000 instructions is the minimum frequency diff --git a/internal/common/common.go b/internal/common/common.go index 35aa7e7a..f7442b14 100644 --- a/internal/common/common.go +++ b/internal/common/common.go @@ -26,6 +26,16 @@ import ( "github.com/spf13/cobra" ) +// Flag names for flags defined in the root command, but sometimes used in other commands. +const ( + FlagDebugName = "debug" + FlagSyslogName = "syslog" + FlagLogStdOutName = "log-stdout" + FlagOutputDirName = "output" + FlagTargetTempRootName = "tempdir" + FlagNoCheckUpdateName = "noupdate" +) + var AppName = filepath.Base(os.Args[0]) // AppContext represents the application context that can be accessed from all commands. diff --git a/internal/common/targets.go b/internal/common/targets.go index 1903c6a7..cc0d3a84 100644 --- a/internal/common/targets.go +++ b/internal/common/targets.go @@ -38,29 +38,29 @@ var ( // target flag names const ( - flagTargetsFileName = "targets" - flagTargetHostName = "target" - flagTargetPortName = "port" - flagTargetUserName = "user" - flagTargetKeyName = "key" + FlagTargetsFileName = "targets" + FlagTargetHostName = "target" + FlagTargetPortName = "port" + FlagTargetUserName = "user" + FlagTargetKeyName = "key" ) var targetFlags = []Flag{ - {Name: flagTargetHostName, Help: "host name or IP address of remote target"}, - {Name: flagTargetPortName, Help: "port for SSH to remote target"}, - {Name: flagTargetUserName, Help: "user name for SSH to remote target"}, - {Name: flagTargetKeyName, Help: "private key file for SSH to remote target"}, - {Name: flagTargetsFileName, Help: "file with remote target(s) connection details. See targets.yaml for format."}, + {Name: FlagTargetHostName, Help: "host name or IP address of remote target"}, + {Name: FlagTargetPortName, Help: "port for SSH to remote target"}, + {Name: FlagTargetUserName, Help: "user name for SSH to remote target"}, + {Name: FlagTargetKeyName, Help: "private key file for SSH to remote target"}, + {Name: FlagTargetsFileName, Help: "file with remote target(s) connection details. See targets.yaml for format."}, } func AddTargetFlags(cmd *cobra.Command) { - cmd.Flags().StringVar(&flagTargetHost, flagTargetHostName, "", targetFlags[0].Help) - cmd.Flags().StringVar(&flagTargetPort, flagTargetPortName, "", targetFlags[1].Help) - cmd.Flags().StringVar(&flagTargetUser, flagTargetUserName, "", targetFlags[2].Help) - cmd.Flags().StringVar(&flagTargetKeyFile, flagTargetKeyName, "", targetFlags[3].Help) - cmd.Flags().StringVar(&flagTargetsFile, flagTargetsFileName, "", targetFlags[4].Help) + cmd.Flags().StringVar(&flagTargetHost, FlagTargetHostName, "", targetFlags[0].Help) + cmd.Flags().StringVar(&flagTargetPort, FlagTargetPortName, "", targetFlags[1].Help) + cmd.Flags().StringVar(&flagTargetUser, FlagTargetUserName, "", targetFlags[2].Help) + cmd.Flags().StringVar(&flagTargetKeyFile, FlagTargetKeyName, "", targetFlags[3].Help) + cmd.Flags().StringVar(&flagTargetsFile, FlagTargetsFileName, "", targetFlags[4].Help) - cmd.MarkFlagsMutuallyExclusive(flagTargetHostName, flagTargetsFileName) + cmd.MarkFlagsMutuallyExclusive(FlagTargetHostName, FlagTargetsFileName) } func GetTargetFlagGroup() FlagGroup { @@ -72,13 +72,13 @@ func GetTargetFlagGroup() FlagGroup { func ValidateTargetFlags(cmd *cobra.Command) error { if flagTargetsFile != "" && flagTargetHost != "" { - return fmt.Errorf("only one of --%s or --%s can be specified", flagTargetsFileName, flagTargetHostName) + return fmt.Errorf("only one of --%s or --%s can be specified", FlagTargetsFileName, FlagTargetHostName) } if flagTargetsFile != "" && (flagTargetPort != "" || flagTargetUser != "" || flagTargetKeyFile != "") { - return fmt.Errorf("if --%s is specified, --%s, --%s, and --%s must not be specified", flagTargetsFileName, flagTargetPortName, flagTargetUserName, flagTargetKeyName) + return fmt.Errorf("if --%s is specified, --%s, --%s, and --%s must not be specified", FlagTargetsFileName, FlagTargetPortName, FlagTargetUserName, FlagTargetKeyName) } if (flagTargetPort != "" || flagTargetUser != "" || flagTargetKeyFile != "") && flagTargetHost == "" { - return fmt.Errorf("if --%s, --%s, or --%s is specified, --%s must also be specified", flagTargetPortName, flagTargetUserName, flagTargetKeyName, flagTargetHostName) + return fmt.Errorf("if --%s, --%s, or --%s is specified, --%s must also be specified", FlagTargetPortName, FlagTargetUserName, FlagTargetKeyName, FlagTargetHostName) } // confirm that the targets file exists if flagTargetsFile != "" { @@ -136,7 +136,7 @@ func GetTargets(cmd *cobra.Command, needsElevatedPrivileges bool, failIfCantElev return } targetTempDirRoot := tempDirFlag.Value.String() - flagTargetsFile, _ := cmd.Flags().GetString(flagTargetsFileName) + flagTargetsFile, _ := cmd.Flags().GetString(FlagTargetsFileName) if flagTargetsFile != "" { targets, targetErrs, err = getTargetsFromFile(flagTargetsFile, localTempDir) } else { @@ -185,10 +185,10 @@ func GetTargets(cmd *cobra.Command, needsElevatedPrivileges bool, failIfCantElev // - targetError: An error indicating a problem with the target host connection. // - err: An error object indicating any error that occurred during the function execution. func getSingleTarget(cmd *cobra.Command, needsElevatedPrivileges bool, failIfCantElevate bool, localTempDir string) (target.Target, error, error) { - targetHost, _ := cmd.Flags().GetString(flagTargetHostName) - targetPort, _ := cmd.Flags().GetString(flagTargetPortName) - targetUser, _ := cmd.Flags().GetString(flagTargetUserName) - targetKey, _ := cmd.Flags().GetString(flagTargetKeyName) + targetHost, _ := cmd.Flags().GetString(FlagTargetHostName) + targetPort, _ := cmd.Flags().GetString(FlagTargetPortName) + targetUser, _ := cmd.Flags().GetString(FlagTargetUserName) + targetKey, _ := cmd.Flags().GetString(FlagTargetKeyName) if targetHost != "" { return getRemoteTarget(targetHost, targetPort, targetUser, targetKey, needsElevatedPrivileges, failIfCantElevate, localTempDir) } else {