Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
kardolus
GitHub Repository: kardolus/chatgpt-cli
Path: blob/main/vendor/github.com/spf13/cobra/active_help.go
2875 views
1
// Copyright 2013-2023 The Cobra Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
package cobra
16
17
import (
18
"fmt"
19
"os"
20
)
21
22
const (
23
activeHelpMarker = "_activeHelp_ "
24
// The below values should not be changed: programs will be using them explicitly
25
// in their user documentation, and users will be using them explicitly.
26
activeHelpEnvVarSuffix = "ACTIVE_HELP"
27
activeHelpGlobalEnvVar = configEnvVarGlobalPrefix + "_" + activeHelpEnvVarSuffix
28
activeHelpGlobalDisable = "0"
29
)
30
31
// AppendActiveHelp adds the specified string to the specified array to be used as ActiveHelp.
32
// Such strings will be processed by the completion script and will be shown as ActiveHelp
33
// to the user.
34
// The array parameter should be the array that will contain the completions.
35
// This function can be called multiple times before and/or after completions are added to
36
// the array. Each time this function is called with the same array, the new
37
// ActiveHelp line will be shown below the previous ones when completion is triggered.
38
func AppendActiveHelp(compArray []Completion, activeHelpStr string) []Completion {
39
return append(compArray, fmt.Sprintf("%s%s", activeHelpMarker, activeHelpStr))
40
}
41
42
// GetActiveHelpConfig returns the value of the ActiveHelp environment variable
43
// <PROGRAM>_ACTIVE_HELP where <PROGRAM> is the name of the root command in upper
44
// case, with all non-ASCII-alphanumeric characters replaced by `_`.
45
// It will always return "0" if the global environment variable COBRA_ACTIVE_HELP
46
// is set to "0".
47
func GetActiveHelpConfig(cmd *Command) string {
48
activeHelpCfg := os.Getenv(activeHelpGlobalEnvVar)
49
if activeHelpCfg != activeHelpGlobalDisable {
50
activeHelpCfg = os.Getenv(activeHelpEnvVar(cmd.Root().Name()))
51
}
52
return activeHelpCfg
53
}
54
55
// activeHelpEnvVar returns the name of the program-specific ActiveHelp environment
56
// variable. It has the format <PROGRAM>_ACTIVE_HELP where <PROGRAM> is the name of the
57
// root command in upper case, with all non-ASCII-alphanumeric characters replaced by `_`.
58
func activeHelpEnvVar(name string) string {
59
return configEnvVar(name, activeHelpEnvVarSuffix)
60
}
61
62