diff --git a/app/cmd/job_search.go b/app/cmd/job_search.go index 820271c4360a89f692c74584bf66ecd45ca23714..cad5a8b4af8f8f532075c6e41ded373f8902de3e 100644 --- a/app/cmd/job_search.go +++ b/app/cmd/job_search.go @@ -1,8 +1,10 @@ package cmd import ( + "fmt" "log" "net/http" + "strings" "github.com/jenkins-zh/jenkins-cli/client" "github.com/spf13/cobra" @@ -51,7 +53,7 @@ var jobSearchCmd = &cobra.Command{ if status, err := jclient.Search(keyword, jobSearchOption.Max); err == nil { var data []byte - if data, err = Format(status, jobSearchOption.Format); err == nil { + if data, err = jobSearchOption.Output(status); err == nil { cmd.Println(string(data)) } else { log.Fatal(err) @@ -61,3 +63,18 @@ var jobSearchCmd = &cobra.Command{ } }, } + +// Output render data into byte array +func (o *JobSearchOption) Output(obj interface{}) (data []byte, err error) { + if data, err = o.OutputOption.Output(obj); err != nil && o.OutputOption.Format == "name" { + buf := "" + searchResult := obj.(*client.SearchResult) + + for _, item := range searchResult.Suggestions { + buf = fmt.Sprintf("%s%s\n", buf, item.Name) + } + data = []byte(strings.Trim(buf, "\n")) + err = nil + } + return +} diff --git a/app/cmd/job_search_test.go b/app/cmd/job_search_test.go index 7e0c739b3d686e2507a9c25ca6ce61b54ebfd645..101a19ed1a3d50d37a09a93cd886dc3ee7c96b56 100644 --- a/app/cmd/job_search_test.go +++ b/app/cmd/job_search_test.go @@ -130,6 +130,35 @@ var _ = Describe("job search command", func() { } ] } +`)) + }) + + It("should success, output format is name", func() { + data, err := generateSampleConfig() + Expect(err).To(BeNil()) + err = ioutil.WriteFile(rootOptions.ConfigFile, data, 0664) + Expect(err).To(BeNil()) + + request, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/search/suggest?query=&max=10", nil) + request.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") + response := &http.Response{ + StatusCode: 200, + Proto: "HTTP/1.1", + Request: request, + Body: ioutil.NopCloser(bytes.NewBufferString(`{"suggestions": [{"name": "fake"},{"name": "fake1"}]}`)), + } + roundTripper.EXPECT(). + RoundTrip(request).Return(response, nil) + + rootCmd.SetArgs([]string{"job", "search", "--all", "-o", "name"}) + + buf := new(bytes.Buffer) + rootCmd.SetOutput(buf) + _, err = rootCmd.ExecuteC() + Expect(err).To(BeNil()) + + Expect(buf.String()).To(Equal(`fake +fake1 `)) }) })