mirror of
https://github.com/ahmetb/kubectx.git
synced 2025-07-18 09:11:16 +00:00
updated flags.go, flags_test.go
This commit is contained in:
parent
97fd236911
commit
c73a6761b1
@ -43,27 +43,42 @@ func parseArgs(argv []string) Op {
|
|||||||
return ListOp{}
|
return ListOp{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if n == 1 || n == 2 {
|
if n == 1 {
|
||||||
v := argv[0]
|
v := argv[0]
|
||||||
force := false
|
switch v {
|
||||||
|
case "--help", "-h":
|
||||||
if n == 2 {
|
|
||||||
force = slices.Contains([]string{"-f", "--force"}, argv[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
if v == "--help" || v == "-h" {
|
|
||||||
return HelpOp{}
|
return HelpOp{}
|
||||||
}
|
case "--version", "-V":
|
||||||
if v == "--version" || v == "-V" {
|
|
||||||
return VersionOp{}
|
return VersionOp{}
|
||||||
}
|
case "--current", "-c":
|
||||||
if v == "--current" || v == "-c" {
|
|
||||||
return CurrentOp{}
|
return CurrentOp{}
|
||||||
|
default:
|
||||||
|
return getSwitchOp(v, false)
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(v, "-") && v != "-" {
|
} else if n == 2 {
|
||||||
return UnsupportedOp{Err: fmt.Errorf("unsupported option '%s'", v)}
|
// {namespace} -f|--force
|
||||||
|
name := argv[0]
|
||||||
|
force := slices.Contains([]string{"-f", "--force"}, argv[1])
|
||||||
|
|
||||||
|
if !force {
|
||||||
|
if !slices.Contains([]string{"-f", "--force"}, argv[0]) {
|
||||||
|
return UnsupportedOp{Err: fmt.Errorf("unsupported arguments %q", argv)}
|
||||||
}
|
}
|
||||||
return SwitchOp{Target: argv[0], Force: force}
|
|
||||||
|
// -f|--force {namespace}
|
||||||
|
force = true
|
||||||
|
name = argv[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return getSwitchOp(name, force)
|
||||||
|
}
|
||||||
|
|
||||||
return UnsupportedOp{Err: fmt.Errorf("too many arguments")}
|
return UnsupportedOp{Err: fmt.Errorf("too many arguments")}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getSwitchOp(v string, force bool) Op {
|
||||||
|
if strings.HasPrefix(v, "-") && v != "-" {
|
||||||
|
return UnsupportedOp{Err: fmt.Errorf("unsupported option %q", v)}
|
||||||
|
}
|
||||||
|
return SwitchOp{Target: v, Force: force}
|
||||||
|
}
|
||||||
|
@ -48,12 +48,30 @@ func Test_parseArgs_new(t *testing.T) {
|
|||||||
{name: "switch by name",
|
{name: "switch by name",
|
||||||
args: []string{"foo"},
|
args: []string{"foo"},
|
||||||
want: SwitchOp{Target: "foo"}},
|
want: SwitchOp{Target: "foo"}},
|
||||||
|
{name: "switch by name force short flag",
|
||||||
|
args: []string{"foo", "-f"},
|
||||||
|
want: SwitchOp{Target: "foo", Force: true}},
|
||||||
|
{name: "switch by name force long flag",
|
||||||
|
args: []string{"foo", "--force"},
|
||||||
|
want: SwitchOp{Target: "foo", Force: true}},
|
||||||
|
{name: "switch by name force short flag before name",
|
||||||
|
args: []string{"-f", "foo"},
|
||||||
|
want: SwitchOp{Target: "foo", Force: true}},
|
||||||
|
{name: "switch by name force long flag before name",
|
||||||
|
args: []string{"--force", "foo"},
|
||||||
|
want: SwitchOp{Target: "foo", Force: true}},
|
||||||
|
{name: "switch by name unknown arguments",
|
||||||
|
args: []string{"foo", "-x"},
|
||||||
|
want: UnsupportedOp{Err: fmt.Errorf("unsupported arguments %q", []string{"foo", "-x"})}},
|
||||||
|
{name: "switch by name unknown arguments",
|
||||||
|
args: []string{"-x", "foo"},
|
||||||
|
want: UnsupportedOp{Err: fmt.Errorf("unsupported arguments %q", []string{"-x", "foo"})}},
|
||||||
{name: "switch by swap",
|
{name: "switch by swap",
|
||||||
args: []string{"-"},
|
args: []string{"-"},
|
||||||
want: SwitchOp{Target: "-"}},
|
want: SwitchOp{Target: "-"}},
|
||||||
{name: "unrecognized flag",
|
{name: "unrecognized flag",
|
||||||
args: []string{"-x"},
|
args: []string{"-x"},
|
||||||
want: UnsupportedOp{Err: fmt.Errorf("unsupported option '-x'")}},
|
want: UnsupportedOp{Err: fmt.Errorf("unsupported option %q", "-x")}},
|
||||||
{name: "too many args",
|
{name: "too many args",
|
||||||
args: []string{"a", "b", "c"},
|
args: []string{"a", "b", "c"},
|
||||||
want: UnsupportedOp{Err: fmt.Errorf("too many arguments")}},
|
want: UnsupportedOp{Err: fmt.Errorf("too many arguments")}},
|
||||||
|
Loading…
Reference in New Issue
Block a user