command: multi-argument autocomplete helper

The predictors built in to the "complete" package assume that the same
type of argument is repeated indefinitely, but most Terraform commands
don't work like that, so this helper allows us to define a sequence of
predictors that apply to each argument in turn.
This commit is contained in:
Martin Atkins 2017-09-25 18:59:29 -07:00
parent 2ed9aa6077
commit e4f18c3f4d
1 changed files with 16 additions and 0 deletions

View File

@ -15,3 +15,19 @@ var completePredictBoolean = complete.PredictSet("true", "false")
// We don't currently have a real predictor for module sources, but
// we'll probably add one later.
var completePredictModuleSource = complete.PredictAnything
type completePredictSequence []complete.Predictor
func (s completePredictSequence) Predict(a complete.Args) []string {
// Only one level of command is stripped off the prefix of a.Completed
// here, so nested subcommands like "workspace new" will need to provide
// dummy entries (e.g. complete.PredictNothing) as placeholders for
// all but the first subcommand. For example, "workspace new" needs
// one placeholder for the argument "new".
idx := len(a.Completed)
if idx >= len(s) {
return nil
}
return s[idx].Predict(a)
}