34 lines
903 B
Go
34 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
|
||
|
}
|