This commit is contained in:
Itay Kalfon 2025-01-23 12:07:06 -05:00 committed by GitHub
commit 7e28384ce2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 4 deletions

View File

@ -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) {

View File

@ -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) {

View File

@ -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

View File

@ -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