33 lines
903 B
Go
33 lines
903 B
Go
package kingpin
|
|
|
|
// HintAction is a function type who is expected to return a slice of possible
|
|
// command line arguments.
|
|
type HintAction func() []string
|
|
type completionsMixin struct {
|
|
hintActions []HintAction
|
|
builtinHintActions []HintAction
|
|
}
|
|
|
|
func (a *completionsMixin) addHintAction(action HintAction) {
|
|
a.hintActions = append(a.hintActions, action)
|
|
}
|
|
|
|
// Allow adding of HintActions which are added internally, ie, EnumVar
|
|
func (a *completionsMixin) addHintActionBuiltin(action HintAction) {
|
|
a.builtinHintActions = append(a.builtinHintActions, action)
|
|
}
|
|
|
|
func (a *completionsMixin) resolveCompletions() []string {
|
|
var hints []string
|
|
|
|
options := a.builtinHintActions
|
|
if len(a.hintActions) > 0 {
|
|
// User specified their own hintActions. Use those instead.
|
|
options = a.hintActions
|
|
}
|
|
|
|
for _, hintAction := range options {
|
|
hints = append(hints, hintAction()...)
|
|
}
|
|
return hints
|
|
}
|