Skip to content

Commit

Permalink
Fix unsupported printer type error.
Browse files Browse the repository at this point in the history
  • Loading branch information
d-kuro committed Apr 24, 2021
1 parent ba061df commit 9e7a366
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 185 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-go@v2
with:
go-version: 1.15
go-version: 1.16
- uses: goreleaser/goreleaser-action@v2
with:
version: latest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/spf13/pflag"
"k8s.io/cli-runtime/pkg/genericclioptions"

// import the auth plugin package
// import the auth plugin package.
_ "k8s.io/client-go/plugin/pkg/client/auth"
)

Expand Down
2 changes: 0 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ require (
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635
github.com/spf13/cobra v1.1.3
github.com/spf13/pflag v1.0.5
github.com/tidwall/sjson v1.1.6
k8s.io/api v0.21.0
k8s.io/apimachinery v0.21.0
k8s.io/cli-runtime v0.21.0
k8s.io/client-go v0.21.0
k8s.io/klog/v2 v2.8.0
k8s.io/kubectl v0.21.0
sigs.k8s.io/yaml v1.2.0
)
8 changes: 0 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -703,15 +703,7 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69
github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
github.com/tetafro/godot v1.3.0/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0=
github.com/tetafro/godot v1.3.2/go.mod h1:ah7jjYmOMnIjS9ku2krapvGQrFNtTLo9Z/qB3dGU1eU=
github.com/tidwall/gjson v1.7.4 h1:19cchw8FOxkG5mdLRkGf9jqIqEyqdZhPqW60XfyFxk8=
github.com/tidwall/gjson v1.7.4/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=
github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/pretty v1.1.0 h1:K3hMW5epkdAVwibsQEfR/7Zj0Qgt4DxtNumTq/VloO8=
github.com/tidwall/pretty v1.1.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/sjson v1.1.6 h1:8fDdlahON04OZBlTQCIatW8FstSFJz8oxidj5h0rmSQ=
github.com/tidwall/sjson v1.1.6/go.mod h1:KN3FZ7odvXIHPbJdhNorK/M9lWweVUbXsXXhrJ/kGOA=
github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
Expand Down
1 change: 0 additions & 1 deletion pkg/cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ func NewCmdCreate(config *genericclioptions.ConfigFlags, streams genericclioptio
}

flags := cmd.Flags()
o.configFlags.AddFlags(flags)
o.AddFlags(flags)

cmd.AddCommand(NewCmdCreateJob(config, streams))
Expand Down
67 changes: 10 additions & 57 deletions pkg/fuzzyfinder/fuzzyfinder.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@ import (
"fmt"
"strings"

"github.com/d-kuro/kubectl-fuzzy/pkg/kubernetes/simplify"
"github.com/d-kuro/kubectl-fuzzy/pkg/printers"
"github.com/ktr0731/go-fuzzyfinder"
corev1 "k8s.io/api/core/v1"
"k8s.io/cli-runtime/pkg/printers"
kprinters "k8s.io/cli-runtime/pkg/printers"
"k8s.io/cli-runtime/pkg/resource"
"sigs.k8s.io/yaml"
)

// Option represents available fuzzy-finding options.
type Option func(*opt)

type opt struct {
allNamespaces bool
printer printers.ResourcePrinter
printer kprinters.ResourcePrinter
rawPreview bool
}

Expand All @@ -32,7 +31,7 @@ func WithAllNamespaces(allNamespace bool) Option {

// WithPreview specifies whether to show a preview during fuzzy-finding.
// The output of the preview is done using the ResourcePrinter.
func WithPreview(printer printers.ResourcePrinter) Option {
func WithPreview(printer kprinters.ResourcePrinter) Option {
return func(o *opt) {
o.printer = printer
}
Expand All @@ -57,11 +56,11 @@ func Infos(infos []*resource.Info, opts ...Option) (*resource.Info, error) {
var finderOpts []fuzzyfinder.Option

if opt.printer != nil {
if opt.rawPreview {
finderOpts = append(finderOpts, rawInfoPreviewWindow(infos, opt.printer))
} else {
finderOpts = append(finderOpts, infoPreviewWindow(infos, opt.printer))
if !opt.rawPreview {
opt.printer = &printers.Simplify{Delegate: opt.printer}
}

finderOpts = append(finderOpts, infoPreviewWindow(infos, opt.printer))
}

printWithKind := multipleGVKsRequested(infos)
Expand Down Expand Up @@ -103,68 +102,22 @@ func Containers(containers []corev1.Container) (corev1.Container, error) {
return containers[idx], nil
}

func rawInfoPreviewWindow(infos []*resource.Info, printer printers.ResourcePrinter) fuzzyfinder.Option {
func infoPreviewWindow(infos []*resource.Info, printer kprinters.ResourcePrinter) fuzzyfinder.Option {
return fuzzyfinder.WithPreviewWindow(func(i, w, h int) string {
if i >= 0 {
buf := &bytes.Buffer{}
if err := printer.PrintObj(infos[i].Object, buf); err != nil {
return fmt.Sprintf("error: %s", err)
}

// Remove the separator as it is added when using kprinters.YAMLPrinter repeatedly.
return strings.TrimPrefix(buf.String(), "---\n")
}

return ""
})
}

func infoPreviewWindow(infos []*resource.Info, printer printers.ResourcePrinter) fuzzyfinder.Option {
jsonPrinter := &printers.JSONPrinter{}

return fuzzyfinder.WithPreviewWindow(func(i, w, h int) string {
if i >= 0 {
buf := &bytes.Buffer{}
if err := jsonPrinter.PrintObj(infos[i].Object, buf); err != nil {
return fmt.Sprintf("error: %s", err)
}

simplified, err := simplifyObject(buf.String(), printer)
if err != nil {
return fmt.Sprintf("error: %s", err)
}

return simplified
}

return ""
})
}

func simplifyObject(jsonObj string, printer printers.ResourcePrinter) (string, error) {
simplified, err := simplify.Transform(jsonObj)
if err != nil {
return "", err
}

return convert([]byte(simplified), printer)
}

func convert(jsonObj []byte, printer printers.ResourcePrinter) (string, error) {
switch printer.(type) {
case *printers.JSONPrinter:
return string(jsonObj), nil
case *printers.YAMLPrinter:
y, err := yaml.JSONToYAML(jsonObj)
if err != nil {
return "", fmt.Errorf("failed to convert JSON to YAML: %w", err)
}

return string(y), nil
default:
return "", fmt.Errorf("unsupported printer type: %T", printer)
}
}

func multipleGVKsRequested(infos []*resource.Info) bool {
if len(infos) < 2 { //nolint:gomnd
return false
Expand Down
115 changes: 0 additions & 115 deletions pkg/kubernetes/simplify/simplify.go

This file was deleted.

Loading

0 comments on commit 9e7a366

Please sign in to comment.