Commit 5e66002e authored by Adam Reese's avatar Adam Reese Committed by GitHub

Merge pull request #1725 from adamreese/ref/subcommands

ref(helm): only pass required dependencies to subcommands
parents 090e00dd 9aa467e3
...@@ -33,29 +33,15 @@ Can be sourced as such ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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() { ...@@ -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 ( ...@@ -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 { ...@@ -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 ( ...@@ -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 ( ...@@ -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 { ...@@ -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) { ...@@ -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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment