mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-14 13:45:06 +00:00
@@ -230,6 +230,7 @@ func (b *Builder) SelectAllParam(selectAll bool) *Builder {
|
||||
// When two or more arguments are received, they must be a single type and resource name(s).
|
||||
// The allowEmptySelector permits to select all the resources (via Everything func).
|
||||
func (b *Builder) ResourceTypeOrNameArgs(allowEmptySelector bool, args ...string) *Builder {
|
||||
args = b.replaceAliases(args)
|
||||
if ok, err := hasCombinedTypeArgs(args); ok {
|
||||
if err != nil {
|
||||
b.errs = append(b.errs, err)
|
||||
@@ -269,6 +270,18 @@ func (b *Builder) ResourceTypeOrNameArgs(allowEmptySelector bool, args ...string
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *Builder) replaceAliases(args []string) []string {
|
||||
replaced := []string{}
|
||||
for _, arg := range args {
|
||||
if aliases, ok := b.mapper.AliasesForResource(arg); ok {
|
||||
arg = strings.Join(aliases, ",")
|
||||
}
|
||||
replaced = append(replaced, arg)
|
||||
}
|
||||
|
||||
return replaced
|
||||
}
|
||||
|
||||
func hasCombinedTypeArgs(args []string) (bool, error) {
|
||||
hasSlash := 0
|
||||
for _, s := range args {
|
||||
|
@@ -783,3 +783,36 @@ func TestReceiveMultipleErrors(t *testing.T) {
|
||||
t.Errorf("unexpected errors %v", errs)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReplaceAliases(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
args []string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "no-replacement",
|
||||
args: []string{"service", "pods", "rc"},
|
||||
expected: []string{"service", "pods", "rc"},
|
||||
},
|
||||
{
|
||||
name: "all-replacement",
|
||||
args: []string{"all"},
|
||||
expected: []string{"rc,svc,pods,pvc"},
|
||||
},
|
||||
}
|
||||
|
||||
b := NewBuilder(latest.RESTMapper, api.Scheme, fakeClient())
|
||||
|
||||
for _, test := range tests {
|
||||
replaced := b.replaceAliases(test.args)
|
||||
if len(replaced) != len(test.expected) {
|
||||
t.Errorf("%s: unexpected args length: expected %d, got %d", test.name, len(test.expected), len(replaced))
|
||||
}
|
||||
for i, arg := range test.expected {
|
||||
if arg != replaced[i] {
|
||||
t.Errorf("%s: unexpected argument: expected %s, got %s", test.name, arg, replaced[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user