diff --git a/app/cmd/completion.go b/app/cmd/completion.go new file mode 100644 index 0000000000000000000000000000000000000000..cab0d238cd36e7f874a421039452eaabed0b6e03 --- /dev/null +++ b/app/cmd/completion.go @@ -0,0 +1,22 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(completionCmd) +} + +var completionCmd = &cobra.Command{ + Use: "completion", + Short: "Genereate bash completion scripts", + Long: `To load completion run: + jcli completion >> ~.bash_completion + +If you get trouble, please visit https://github.com/jenkins-zh/jenkins-cli/issues/83. +`, + Run: func(cmd *cobra.Command, _ []string) { + rootCmd.GenBashCompletion(cmd.OutOrStdout()) + }, +} diff --git a/app/cmd/completion_test.go b/app/cmd/completion_test.go new file mode 100644 index 0000000000000000000000000000000000000000..d61a9de140fa2db06c0ef9e38e9723b9f5a87075 --- /dev/null +++ b/app/cmd/completion_test.go @@ -0,0 +1,49 @@ +package cmd + +import ( + "bytes" + "io/ioutil" + "os" + + "github.com/golang/mock/gomock" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe("job type command", func() { + var ( + ctrl *gomock.Controller + ) + + BeforeEach(func() { + ctrl = gomock.NewController(GinkgoT()) + rootCmd.SetArgs([]string{}) + rootOptions.Jenkins = "" + rootOptions.ConfigFile = "test.yaml" + }) + + AfterEach(func() { + rootCmd.SetArgs([]string{}) + os.Remove(rootOptions.ConfigFile) + rootOptions.ConfigFile = "" + ctrl.Finish() + }) + + Context("basic cases", func() { + It("should success, empty list", func() { + data, err := generateSampleConfig() + Expect(err).To(BeNil()) + err = ioutil.WriteFile(rootOptions.ConfigFile, data, 0664) + Expect(err).To(BeNil()) + + rootCmd.SetArgs([]string{"completion"}) + + buf := new(bytes.Buffer) + rootCmd.SetOutput(buf) + _, err = rootCmd.ExecuteC() + Expect(err).To(BeNil()) + + Expect(buf.String()).NotTo(Equal("")) + }) + }) +})