vendor/github.com/spf13/cobra/active_help.go
changeset 260 445e01aede7e
child 265 05c40b36d3b2
equal deleted inserted replaced
259:db4911b0c721 260:445e01aede7e
       
     1 package cobra
       
     2 
       
     3 import (
       
     4 	"fmt"
       
     5 	"os"
       
     6 	"strings"
       
     7 )
       
     8 
       
     9 const (
       
    10 	activeHelpMarker = "_activeHelp_ "
       
    11 	// The below values should not be changed: programs will be using them explicitly
       
    12 	// in their user documentation, and users will be using them explicitly.
       
    13 	activeHelpEnvVarSuffix  = "_ACTIVE_HELP"
       
    14 	activeHelpGlobalEnvVar  = "COBRA_ACTIVE_HELP"
       
    15 	activeHelpGlobalDisable = "0"
       
    16 )
       
    17 
       
    18 // AppendActiveHelp adds the specified string to the specified array to be used as ActiveHelp.
       
    19 // Such strings will be processed by the completion script and will be shown as ActiveHelp
       
    20 // to the user.
       
    21 // The array parameter should be the array that will contain the completions.
       
    22 // This function can be called multiple times before and/or after completions are added to
       
    23 // the array.  Each time this function is called with the same array, the new
       
    24 // ActiveHelp line will be shown below the previous ones when completion is triggered.
       
    25 func AppendActiveHelp(compArray []string, activeHelpStr string) []string {
       
    26 	return append(compArray, fmt.Sprintf("%s%s", activeHelpMarker, activeHelpStr))
       
    27 }
       
    28 
       
    29 // GetActiveHelpConfig returns the value of the ActiveHelp environment variable
       
    30 // <PROGRAM>_ACTIVE_HELP where <PROGRAM> is the name of the root command in upper
       
    31 // case, with all - replaced by _.
       
    32 // It will always return "0" if the global environment variable COBRA_ACTIVE_HELP
       
    33 // is set to "0".
       
    34 func GetActiveHelpConfig(cmd *Command) string {
       
    35 	activeHelpCfg := os.Getenv(activeHelpGlobalEnvVar)
       
    36 	if activeHelpCfg != activeHelpGlobalDisable {
       
    37 		activeHelpCfg = os.Getenv(activeHelpEnvVar(cmd.Root().Name()))
       
    38 	}
       
    39 	return activeHelpCfg
       
    40 }
       
    41 
       
    42 // activeHelpEnvVar returns the name of the program-specific ActiveHelp environment
       
    43 // variable.  It has the format <PROGRAM>_ACTIVE_HELP where <PROGRAM> is the name of the
       
    44 // root command in upper case, with all - replaced by _.
       
    45 func activeHelpEnvVar(name string) string {
       
    46 	// This format should not be changed: users will be using it explicitly.
       
    47 	activeHelpEnvVar := strings.ToUpper(fmt.Sprintf("%s%s", name, activeHelpEnvVarSuffix))
       
    48 	return strings.ReplaceAll(activeHelpEnvVar, "-", "_")
       
    49 }