mirror of
https://github.com/ahmetb/kubectx.git
synced 2025-08-01 07:21:05 +00:00
Merge 8857602f83
into 013b6bc252
This commit is contained in:
commit
7e28384ce2
@ -40,6 +40,17 @@ func parseArgs(argv []string) Op {
|
||||
return ListOp{}
|
||||
}
|
||||
|
||||
if argv[0] == "-q" {
|
||||
if cmdutil.IsInteractiveMode(os.Stdout) {
|
||||
if len(argv) > 1 {
|
||||
return InteractiveSwitchOp{SelfCmd: os.Args[0], Query: argv[1]}
|
||||
} else {
|
||||
return UnsupportedOp{Err: fmt.Errorf("'-q' needs an argument")}
|
||||
}
|
||||
} else {
|
||||
return UnsupportedOp{Err: fmt.Errorf("'-q' only works in interactive mode")}
|
||||
}
|
||||
}
|
||||
if argv[0] == "-d" {
|
||||
if len(argv) == 1 {
|
||||
if cmdutil.IsInteractiveMode(os.Stdout) {
|
||||
|
@ -78,6 +78,10 @@ func Test_parseArgs_new(t *testing.T) {
|
||||
{name: "too many args",
|
||||
args: []string{"a", "b", "c"},
|
||||
want: UnsupportedOp{Err: fmt.Errorf("too many arguments")}},
|
||||
{name: "missing query",
|
||||
args: []string{"-q"},
|
||||
want: UnsupportedOp{Err: fmt.Errorf("'-q' only works in interactive mode")},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
@ -31,14 +31,23 @@ import (
|
||||
)
|
||||
|
||||
type InteractiveSwitchOp struct {
|
||||
SelfCmd string
|
||||
SelfCmd string
|
||||
Query string
|
||||
FzfFlags []string
|
||||
}
|
||||
|
||||
type InteractiveDeleteOp struct {
|
||||
SelfCmd string
|
||||
}
|
||||
|
||||
func (op InteractiveSwitchOp) Run(_, stderr io.Writer) error {
|
||||
func (op InteractiveSwitchOp) Run(stdout io.Writer, stderr io.Writer) error {
|
||||
if op.Query != "" {
|
||||
op.FzfFlags = append(op.FzfFlags, "-q", op.Query)
|
||||
}
|
||||
return op._Run(stdout, stderr)
|
||||
}
|
||||
|
||||
func (op InteractiveSwitchOp) _Run(_, stderr io.Writer) error {
|
||||
// parse kubeconfig just to see if it can be loaded
|
||||
kc := new(kubeconfig.Kubeconfig).WithLoader(kubeconfig.DefaultLoader)
|
||||
if err := kc.Parse(); err != nil {
|
||||
@ -49,8 +58,11 @@ func (op InteractiveSwitchOp) Run(_, stderr io.Writer) error {
|
||||
return errors.Wrap(err, "kubeconfig error")
|
||||
}
|
||||
kc.Close()
|
||||
|
||||
cmd := exec.Command("fzf", "--ansi", "--no-preview")
|
||||
fzfFlags := append([]string{"--ansi", "--no-preview"}, op.FzfFlags...)
|
||||
cmd := exec.Command(
|
||||
"fzf",
|
||||
fzfFlags...,
|
||||
)
|
||||
var out bytes.Buffer
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stderr = stderr
|
||||
|
@ -41,6 +41,7 @@ func printUsage(out io.Writer) error {
|
||||
%PROG% <NEW_NAME>=. : rename current-context to <NEW_NAME>
|
||||
%PROG% -u, --unset : unset the current context
|
||||
%PROG% -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
|
||||
%PROG% -q <QUERY> : start the finder with the given query
|
||||
%SPAC% (this command won't delete the user/cluster entry
|
||||
%SPAC% referenced by the context entry)
|
||||
%PROG% -h,--help : show this message
|
||||
|
Loading…
Reference in New Issue
Block a user