未验证 提交 7bdb448d 编写于 作者: LinuxSuRen's avatar LinuxSuRen 提交者: GitHub

Merge pull request #163 from LinuxSuRen/output-name

Add single name as a output format
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
}
......@@ -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
`))
})
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册