commands/flag/flag.go (29 lines of code) (raw):

package flag import ( "github.com/spf13/cobra" "github.com/spf13/viper" ) func GroupOverride(cmd *cobra.Command) (string, error) { // Bind cobra command persistent flags to env user viper viper.SetEnvPrefix("GITLAB") err := viper.BindEnv("group") if err != nil { return "", err } // Get group from env groupFromEnv := viper.GetString("group") // Get group/repo flags group, err := cmd.Flags().GetString("group") if err != nil { return "", err } repo, err := cmd.Flags().GetString("repo") if err != nil { return "", err } // Determine which group to use based on env and repo/group flags switch { case repo != "": // Ignore any groups if the repo flag is set return "", nil case group != "": // Use the group flag if set and repo flag is not set return group, nil default: // Consider environment if no repo or group flags are set return groupFromEnv, nil } }