Merge pull request #1725 from adamreese/ref/subcommands

ref(helm): only pass required dependencies to subcommands
pull/1706/head
Adam Reese 8 years ago committed by GitHub
commit 5e66002e21

@ -33,29 +33,15 @@ Can be sourced as such
$ source <(helm completion) $ source <(helm completion)
` `
type completionCmd struct { func newCompletionCmd(out io.Writer) *cobra.Command {
out io.Writer
topCmd *cobra.Command
}
func newCompletionCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command {
cc := &completionCmd{out: out, topCmd: topCmd}
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "completion", Use: "completion",
Short: "Generate bash autocompletions script", Short: "Generate bash autocompletions script",
Long: completionDesc, Long: completionDesc,
Hidden: false, Hidden: false,
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, _ []string) error {
cc.run() return cmd.Root().GenBashCompletion(out)
return nil
}, },
} }
return cmd return cmd
} }
func (c *completionCmd) run() error {
return c.topCmd.GenBashCompletion(c.out)
}

@ -44,8 +44,8 @@ type docsCmd struct {
topCmd *cobra.Command topCmd *cobra.Command
} }
func newDocsCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command { func newDocsCmd(out io.Writer) *cobra.Command {
dc := &docsCmd{out: out, topCmd: topCmd} dc := &docsCmd{out: out}
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "docs", Use: "docs",
@ -53,8 +53,8 @@ func newDocsCmd(out io.Writer, topCmd *cobra.Command) *cobra.Command {
Long: docsDesc, Long: docsDesc,
Hidden: true, Hidden: true,
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
dc.run() dc.topCmd = cmd.Root()
return nil return dc.run()
}, },
} }

@ -94,41 +94,39 @@ func newRootCmd(out io.Writer) *cobra.Command {
p.BoolVar(&flagDebug, "debug", false, "enable verbose output") p.BoolVar(&flagDebug, "debug", false, "enable verbose output")
p.StringVar(&tillerNamespace, "tiller-namespace", defaultTillerNamespace(), "namespace of tiller") 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( cmd.AddCommand(
// chart commands
newCreateCmd(out), newCreateCmd(out),
newDeleteCmd(nil, out),
newDependencyCmd(out), newDependencyCmd(out),
newFetchCmd(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), newGetCmd(nil, out),
newHomeCmd(out),
newHistoryCmd(nil, out), newHistoryCmd(nil, out),
newInitCmd(out),
newInspectCmd(nil, out),
newInstallCmd(nil, out), newInstallCmd(nil, out),
newLintCmd(out),
newListCmd(nil, out), newListCmd(nil, out),
newPackageCmd(nil, out),
newRepoCmd(out),
newRollbackCmd(nil, out), newRollbackCmd(nil, out),
newSearchCmd(out),
newServeCmd(out),
newStatusCmd(nil, out), newStatusCmd(nil, out),
newUpgradeCmd(nil, out), newUpgradeCmd(nil, out),
newVerifyCmd(out),
newCompletionCmd(out),
newHomeCmd(out),
newInitCmd(out),
newVersionCmd(nil, out), newVersionCmd(nil, out),
newCompletionCmd(out, cmd),
// Hidden documentation generator command: 'helm docs' // Hidden documentation generator command: 'helm docs'
newDocsCmd(out, cmd), newDocsCmd(out),
// Deprecated // Deprecated
rup, markDeprecated(newRepoUpdateCmd(out), "use 'helm repo update'\n"),
) )
// Find and add plugins // Find and add plugins
@ -137,6 +135,11 @@ func newRootCmd(out io.Writer) *cobra.Command {
return cmd return cmd
} }
func init() {
// Tell gRPC not to log to console.
grpclog.SetLogger(log.New(ioutil.Discard, "", log.LstdFlags))
}
func main() { func main() {
cmd := newRootCmd(os.Stdout) cmd := newRootCmd(os.Stdout)
if err := cmd.Execute(); err != nil { 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 { func setupConnection(c *cobra.Command, args []string) error {
if tillerHost == "" { if tillerHost == "" {
tunnel, err := newTillerPortForwarder(tillerNamespace, kubeContext) tunnel, err := newTillerPortForwarder(tillerNamespace, kubeContext)

@ -24,7 +24,6 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/helm"
) )
const inspectDesc = ` const inspectDesc = `
@ -50,7 +49,6 @@ type inspectCmd struct {
verify bool verify bool
keyring string keyring string
out io.Writer out io.Writer
client helm.Interface
version string version string
} }
@ -60,9 +58,8 @@ const (
both = "both" both = "both"
) )
func newInspectCmd(c helm.Interface, out io.Writer) *cobra.Command { func newInspectCmd(out io.Writer) *cobra.Command {
insp := &inspectCmd{ insp := &inspectCmd{
client: c,
out: out, out: out,
output: both, output: both,
} }

@ -30,7 +30,6 @@ import (
"k8s.io/helm/cmd/helm/helmpath" "k8s.io/helm/cmd/helm/helmpath"
"k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/provenance" "k8s.io/helm/pkg/provenance"
"k8s.io/helm/pkg/repo" "k8s.io/helm/pkg/repo"
) )
@ -56,7 +55,7 @@ type packageCmd struct {
home helmpath.Home home helmpath.Home
} }
func newPackageCmd(client helm.Interface, out io.Writer) *cobra.Command { func newPackageCmd(out io.Writer) *cobra.Command {
pkg := &packageCmd{ pkg := &packageCmd{
out: out, out: out,
} }

@ -107,7 +107,7 @@ func TestPackage(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
buf := bytes.NewBuffer(nil) buf := bytes.NewBuffer(nil)
c := newPackageCmd(nil, buf) c := newPackageCmd(buf)
// This is an unfortunate byproduct of the tmpdir // This is an unfortunate byproduct of the tmpdir
if v, ok := tt.flags["keyring"]; ok && len(v) > 0 { if v, ok := tt.flags["keyring"]; ok && len(v) > 0 {

Loading…
Cancel
Save