diff --git a/cmd/completion_util.go b/cmd/completion_util.go index 3328e6d9f..c96129c41 100644 --- a/cmd/completion_util.go +++ b/cmd/completion_util.go @@ -125,3 +125,9 @@ func CompleteBuilderList(cmd *cobra.Command, args []string, complete string) (st directive = cobra.ShellCompDirectiveDefault return } + +func CompleteDeployBuildType(cmd *cobra.Command, args []string, complete string) (buildTypes []string, directive cobra.ShellCompDirective) { + buildTypes = fn.AllBuildTypes() + directive = cobra.ShellCompDirectiveDefault + return +} diff --git a/cmd/deploy.go b/cmd/deploy.go index cdd6da2a5..d68f318e8 100644 --- a/cmd/deploy.go +++ b/cmd/deploy.go @@ -124,6 +124,10 @@ kn func deploy --image quay.io/myuser/myfunc -n myns setPathFlag(cmd) setNamespaceFlag(cmd) + if err := cmd.RegisterFlagCompletionFunc("build", CompleteDeployBuildType); err != nil { + fmt.Println("internal: error while calling RegisterFlagCompletionFunc: ", err) + } + cmd.RunE = func(cmd *cobra.Command, args []string) error { return runDeploy(cmd, args, clientFn) } diff --git a/function_buildtype.go b/function_buildtype.go index 18c741693..d1a3c4585 100644 --- a/function_buildtype.go +++ b/function_buildtype.go @@ -11,6 +11,10 @@ const ( //BuildTypeRemote = "remote" // TODO not supported yet ) +func AllBuildTypes() []string { + return []string{BuildTypeLocal, BuildTypeGit, BuildTypeDisabled} +} + // ValidateBuild validates input Build type option from Function config. // If "allowUnset" is set to true, the specified type could be "" -> fallback to DefaultBuildType, // this option should be used for validating func.yaml file, where users don't have to specify the build type.