From c3beadacd9671625aff182f7e6072b77d784286f Mon Sep 17 00:00:00 2001 From: Phani Teja Marupaka Date: Tue, 23 Mar 2021 15:40:35 -0700 Subject: [PATCH] Check if value is provided --- cmd/config/internal/commands/cmdset.go | 5 +++ cmd/config/internal/commands/cmdset_test.go | 48 +++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/cmd/config/internal/commands/cmdset.go b/cmd/config/internal/commands/cmdset.go index a95e307fe..c7a3bee64 100644 --- a/cmd/config/internal/commands/cmdset.go +++ b/cmd/config/internal/commands/cmdset.go @@ -71,6 +71,11 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { return errors.Errorf("value should set either from flag or arg") } + // make sure that the value is provided either through values flag or as an arg + if !valueFlagSet && len(args) < 3 { + return errors.Errorf("value must be provided either from flag or arg") + } + r.Name = args[1] if valueFlagSet { r.Value = r.Values[0] diff --git a/cmd/config/internal/commands/cmdset_test.go b/cmd/config/internal/commands/cmdset_test.go index 1de06fcd6..90ef05093 100644 --- a/cmd/config/internal/commands/cmdset_test.go +++ b/cmd/config/internal/commands/cmdset_test.go @@ -603,6 +603,54 @@ spec: errMsg: `value should set either from flag or arg`, }, + { + name: "value must be provided from either flag or arg", + args: []string{"replicas", "--description", "hi there"}, + inputOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + input: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + expectedOpenAPI: ` +apiVersion: v1alpha1 +kind: Example +openAPI: + definitions: + io.k8s.cli.setters.replicas: + description: hello world + x-k8s-cli: + setter: + name: replicas + value: "3" + setBy: me + `, + expectedResources: ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + replicas: 3 # {"$ref":"#/definitions/io.k8s.cli.setters.replicas"} + `, + errMsg: `value must be provided either from flag or arg`, + }, + { name: "openAPI list values set by flag success", args: []string{"list", "--values", "10", "--values", "11"},