From 9aa467e3170d73c029959ac09db00cf7c4166963 Mon Sep 17 00:00:00 2001 From: Adam Reese Date: Mon, 19 Dec 2016 09:08:06 -0800 Subject: [PATCH] ref(helm): only pass required dependencies to subcommands --- cmd/helm/completion.go | 20 +++-------------- cmd/helm/docs.go | 8 +++---- cmd/helm/helm.go | 46 +++++++++++++++++++++++----------------- cmd/helm/inspect.go | 5 +---- cmd/helm/package.go | 3 +-- cmd/helm/package_test.go | 2 +- 6 files changed, 37 insertions(+), 47 deletions(-) mode change 100755 => 100644 cmd/helm/completion.go diff --git a/cmd/helm/completion.go b/cmd/helm/completion.go old mode 100755 new mode 100644 index 6034a08d4..ddb8f06c7 --- a/cmd/helm/completion.go +++ b/cmd/helm/completion.go @@ -33,29 +33,15 @@ Can be sourced as such $ source <(helm completion) ` -type completionCmd struct { - out io.Writer - topCmd *cobra.Command -} - -func newCompletionCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command { - cc := &completionCmd{out: out, topCmd: topCmd} - +func newCompletionCmd(out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "completion", Short: "Generate bash autocompletions script", Long: completionDesc, Hidden: false, - RunE: func(cmd *cobra.Command, args []string) error { - cc.run() - return nil + RunE: func(cmd *cobra.Command, _ []string) error { + return cmd.Root().GenBashCompletion(out) }, } - return cmd } - -func (c *completionCmd) run() error { - - return c.topCmd.GenBashCompletion(c.out) -} diff --git a/cmd/helm/docs.go b/cmd/helm/docs.go index 3b1d22005..e5b9f7521 100644 --- a/cmd/helm/docs.go +++ b/cmd/helm/docs.go @@ -44,8 +44,8 @@ type docsCmd struct { topCmd *cobra.Command } -func newDocsCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command { - dc := &docsCmd{out: out, topCmd: topCmd} +func newDocsCmd(out io.Writer) *cobra.Command { + dc := &docsCmd{out: out} cmd := &cobra.Command{ Use: "docs", @@ -53,8 +53,8 @@ func newDocsCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command { Long: docsDesc, Hidden: true, RunE: func(cmd *cobra.Command, args []string) error { - dc.run() - return nil + dc.topCmd = cmd.Root() + return dc.run() }, } diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index 912d5f721..352a8340a 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -94,41 +94,39 @@ func newRootCmd(out io.Writer) *cobra.Command { p.BoolVar(&flagDebug, "debug", false, "enable verbose output") p.StringVar(&tillerNamespace, "tiller-namespace", defaultTillerNamespace(), "namespace of tiller") - // Tell gRPC not to log to console. - grpclog.SetLogger(log.New(ioutil.Discard, "", log.LstdFlags)) - - rup := newRepoUpdateCmd(out) - rup.Deprecated = "use 'helm repo update'\n" - cmd.AddCommand( + // chart commands newCreateCmd(out), - newDeleteCmd(nil, out), newDependencyCmd(out), newFetchCmd(out), + newInspectCmd(out), + newLintCmd(out), + newPackageCmd(out), + newRepoCmd(out), + newSearchCmd(out), + newServeCmd(out), + newVerifyCmd(out), + + // release commands + newDeleteCmd(nil, out), newGetCmd(nil, out), - newHomeCmd(out), newHistoryCmd(nil, out), - newInitCmd(out), - newInspectCmd(nil, out), newInstallCmd(nil, out), - newLintCmd(out), newListCmd(nil, out), - newPackageCmd(nil, out), - newRepoCmd(out), newRollbackCmd(nil, out), - newSearchCmd(out), - newServeCmd(out), newStatusCmd(nil, out), newUpgradeCmd(nil, out), - newVerifyCmd(out), + + newCompletionCmd(out), + newHomeCmd(out), + newInitCmd(out), newVersionCmd(nil, out), - newCompletionCmd(out, cmd), // Hidden documentation generator command: 'helm docs' - newDocsCmd(out, cmd), + newDocsCmd(out), // Deprecated - rup, + markDeprecated(newRepoUpdateCmd(out), "use 'helm repo update'\n"), ) // Find and add plugins @@ -137,6 +135,11 @@ func newRootCmd(out io.Writer) *cobra.Command { return cmd } +func init() { + // Tell gRPC not to log to console. + grpclog.SetLogger(log.New(ioutil.Discard, "", log.LstdFlags)) +} + func main() { cmd := newRootCmd(os.Stdout) if err := cmd.Execute(); err != nil { @@ -144,6 +147,11 @@ func main() { } } +func markDeprecated(cmd *cobra.Command, notice string) *cobra.Command { + cmd.Deprecated = notice + return cmd +} + func setupConnection(c *cobra.Command, args []string) error { if tillerHost == "" { tunnel, err := newTillerPortForwarder(tillerNamespace, kubeContext) diff --git a/cmd/helm/inspect.go b/cmd/helm/inspect.go index 46e47d808..c3d539b3a 100644 --- a/cmd/helm/inspect.go +++ b/cmd/helm/inspect.go @@ -24,7 +24,6 @@ import ( "github.com/spf13/cobra" "k8s.io/helm/pkg/chartutil" - "k8s.io/helm/pkg/helm" ) const inspectDesc = ` @@ -50,7 +49,6 @@ type inspectCmd struct { verify bool keyring string out io.Writer - client helm.Interface version string } @@ -60,9 +58,8 @@ const ( both = "both" ) -func newInspectCmd(c helm.Interface, out io.Writer) *cobra.Command { +func newInspectCmd(out io.Writer) *cobra.Command { insp := &inspectCmd{ - client: c, out: out, output: both, } diff --git a/cmd/helm/package.go b/cmd/helm/package.go index 92e217202..3d29b6e54 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -30,7 +30,6 @@ import ( "k8s.io/helm/cmd/helm/helmpath" "k8s.io/helm/pkg/chartutil" - "k8s.io/helm/pkg/helm" "k8s.io/helm/pkg/provenance" "k8s.io/helm/pkg/repo" ) @@ -56,7 +55,7 @@ type packageCmd struct { home helmpath.Home } -func newPackageCmd(client helm.Interface, out io.Writer) *cobra.Command { +func newPackageCmd(out io.Writer) *cobra.Command { pkg := &packageCmd{ out: out, } diff --git a/cmd/helm/package_test.go b/cmd/helm/package_test.go index fc2060c16..c21cdb22c 100644 --- a/cmd/helm/package_test.go +++ b/cmd/helm/package_test.go @@ -107,7 +107,7 @@ func TestPackage(t *testing.T) { for _, tt := range tests { buf := bytes.NewBuffer(nil) - c := newPackageCmd(nil, buf) + c := newPackageCmd(buf) // This is an unfortunate byproduct of the tmpdir if v, ok := tt.flags["keyring"]; ok && len(v) > 0 {