mirror of https://github.com/k3s-io/k3s
Fix handling of wrapped subcommands when run with a path
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>pull/11290/head
parent
71fdc4a117
commit
0c29696eef
|
@ -1,6 +1,7 @@
|
||||||
package configfilearg
|
package configfilearg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"path/filepath"
|
||||||
"slices"
|
"slices"
|
||||||
|
|
||||||
"github.com/k3s-io/k3s/pkg/cli/cmds"
|
"github.com/k3s-io/k3s/pkg/cli/cmds"
|
||||||
|
@ -31,10 +32,10 @@ func MustFindString(args []string, target string, commandsWithoutOverride ...str
|
||||||
// Some subcommands such as `k3s ctr` or just `ctr` need to be extracted out even to
|
// Some subcommands such as `k3s ctr` or just `ctr` need to be extracted out even to
|
||||||
// provide version or help text, and we cannot short-circuit loading the config file. For
|
// provide version or help text, and we cannot short-circuit loading the config file. For
|
||||||
// these commands, treat failure to load the config file as a warning instead of a fatal.
|
// these commands, treat failure to load the config file as a warning instead of a fatal.
|
||||||
if len(args) > 0 && args[0] == version.Program {
|
if len(args) > 0 && filepath.Base(args[0]) == version.Program {
|
||||||
args = args[1:]
|
args = args[1:]
|
||||||
}
|
}
|
||||||
if len(args) > 0 && slices.Contains(commandsWithoutOverride, args[0]) {
|
if len(args) > 0 && slices.Contains(commandsWithoutOverride, filepath.Base(args[0])) {
|
||||||
overrideFlags = nil
|
overrideFlags = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,12 +124,32 @@ func Test_UnitMustFindString(t *testing.T) {
|
||||||
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Override flag is not returned for specific subcommands",
|
name: "Override flag is not returned for specific subcommands with full path",
|
||||||
|
args: []string{"/usr/local/bin/k3s", "ctr", "--foo", "bar", "--version"},
|
||||||
|
target: "token",
|
||||||
|
|
||||||
|
want: "12345",
|
||||||
|
|
||||||
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
||||||
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Override flag is not returned for wrapped commands",
|
||||||
args: []string{"kubectl", "--foo", "bar", "--help"},
|
args: []string{"kubectl", "--foo", "bar", "--help"},
|
||||||
target: "token",
|
target: "token",
|
||||||
|
|
||||||
want: "12345",
|
want: "12345",
|
||||||
|
|
||||||
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
||||||
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Override flag is not returned for wrapped commands with full path",
|
||||||
|
args: []string{"/usr/local/bin/kubectl", "--foo", "bar", "--help"},
|
||||||
|
target: "token",
|
||||||
|
|
||||||
|
want: "12345",
|
||||||
|
|
||||||
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
||||||
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue