diff --git a/cli/cmd/prompt.go b/cli/cmd/prompt.go index 52e0c8b5eb3f479223c26b4cd1438e71aa06ff27..168f8e4283463f438b8cfb9ddea9159c65bc9e1c 100644 --- a/cli/cmd/prompt.go +++ b/cli/cmd/prompt.go @@ -198,15 +198,36 @@ func cobraCommandCompletion(currCmd *cobra.Command, d prompt.Document, inputFlag func completionBasedOnCmd(c *PromptCompleter, cmd *cobra.Command, inputSplit []string, inputFlags []string, d prompt.Document) []prompt.Suggest { switch cmd { case pndUseCmd, pndGetCmd: - return cobraCommandCompletion(cmd, d, inputFlags, getPnds()) + if len(inputSplit) < 3 || (len(inputSplit) == 3 && d.GetWordBeforeCursor() != "") { + pnds, err := getPnds() + if err != nil { + return []prompt.Suggest{} + } + return cobraCommandCompletion(cmd, d, inputFlags, pnds) + } case commitCmd: - return getChangesByType(pnd.ChangeState_CHANGE_STATE_PENDING) + if len(inputSplit) < 3 || (len(inputSplit) == 3 && d.GetWordBeforeCursor() != "") { + ch, err := getChangesByType(pnd.ChangeState_CHANGE_STATE_PENDING) + if err != nil { + return []prompt.Suggest{} + } + return ch + } case confirmCmd: - return getChangesByType(pnd.ChangeState_CHANGE_STATE_COMMITTED) + if len(inputSplit) < 3 || (len(inputSplit) == 3 && d.GetWordBeforeCursor() != "") { + ch, err := getChangesByType(pnd.ChangeState_CHANGE_STATE_COMMITTED) + if err != nil { + return []prompt.Suggest{} + } + return ch + } case deviceGetCmd, deviceSetCmd: return deviceGetCompletion(c, d, inputSplit) case deviceShowCmd: - devices, _ := getDevices() + devices, err := getDevices() + if err != nil { + return []prompt.Suggest{} + } return devices case deviceCmd: c.currentDeviceSuggestions = nil @@ -214,6 +235,8 @@ func completionBasedOnCmd(c *PromptCompleter, cmd *cobra.Command, inputSplit []s default: return cobraCommandCompletion(cmd, d, inputFlags, []prompt.Suggest{}) } + + return []prompt.Suggest{} } var exitCmd = &cobra.Command{