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
$ 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)
}
......@@ -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()
},
}
......
......@@ -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)
......
......@@ -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,
}
......
......@@ -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,
}
......
......@@ -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 {
......
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