From 020ac7a6fbaba687554dfb32768f68d0591f4fb0 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 20 Dec 2016 09:04:32 -0500 Subject: [PATCH] Verbose flag added --- cmd/jkl/jkl.go | 6 ++++++ jiraclient.go | 31 ++++++++++++++++++++++++++++++- jkl.go | 12 ++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/cmd/jkl/jkl.go b/cmd/jkl/jkl.go index 5625d44..553ef6f 100644 --- a/cmd/jkl/jkl.go +++ b/cmd/jkl/jkl.go @@ -8,9 +8,12 @@ import ( "otremblay.com/jkl" ) +var verbose = flag.Bool("v", false, "Output debug information about jkl") + func main() { jkl.FindRCFile() flag.Parse() + jkl.Verbose = verbose if len(flag.Args()) == 0 { fmt.Print(usage) return @@ -23,6 +26,9 @@ func main() { func runcmd(args []string) error { switch args[0] { case "list": + if *verbose { + fmt.Println("Running List command") + } lcmd, err := NewListCmd(flag.Args()[1:]) if err != nil { return err diff --git a/jiraclient.go b/jiraclient.go index 1554b59..15e097b 100644 --- a/jiraclient.go +++ b/jiraclient.go @@ -1,7 +1,10 @@ package jkl import ( + "errors" + "fmt" "io" + "io/ioutil" "net/http" "net/http/cookiejar" "net/url" @@ -27,18 +30,44 @@ func NewJiraClient(jiraRoot string) *JiraClient { if j.jiraRoot == "" { j.jiraRoot = os.Getenv("JIRA_ROOT") } + if *Verbose { + fmt.Println("Jira root:", j.jiraRoot) + } return j } func (j *JiraClient) Do(req *http.Request) (*http.Response, error) { var err error req.SetBasicAuth(os.Getenv("JIRA_USER"), os.Getenv("JIRA_PASSWORD")) + if *Verbose { + fmt.Println("Jira User: ", os.Getenv("JIRA_USER")) + fmt.Println("Jira Password: ", os.Getenv("JIRA_PASSWORD")) + } req.Header.Add("Content-Type", "application/json") + req.Header.Add("Accept", "application/json, text/plain, text/html") req.URL, err = url.Parse(j.jiraRoot + "rest/" + req.URL.RequestURI()) if err != nil { return nil, err } - return j.Client.Do(req) + resp, err := j.Client.Do(req) + if err != nil { + return nil, err + } + if resp.StatusCode >= 400 { + fmt.Println("Status code:", resp.StatusCode) + if *Verbose { + fmt.Println("Headers:") + fmt.Println(resp.Header) + } + fmt.Println("Response:") + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + fmt.Println(string(b)) + return nil, errors.New("Some http error happened.") + } + return resp, nil } func (j *JiraClient) Put(path string, payload io.Reader) (*http.Response, error) { diff --git a/jkl.go b/jkl.go index 2925a70..05b88af 100644 --- a/jkl.go +++ b/jkl.go @@ -3,6 +3,7 @@ package jkl import ( "bytes" "encoding/json" + "errors" "fmt" "io" "io/ioutil" @@ -14,6 +15,7 @@ import ( "github.com/joho/godotenv" ) +var Verbose *bool var defaultIssue = &JiraIssue{} func bootHttpClient() { @@ -68,6 +70,16 @@ func List(jql string) ([]*JiraIssue, error) { fmt.Println(err) return nil, err } + if resp.StatusCode >= 400 { + fmt.Println("Status code:", resp.StatusCode) + fmt.Println("Response:") + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + fmt.Println(string(b)) + return nil, errors.New("Some http error happened.") + } dec := json.NewDecoder(resp.Body) var issues = &Search{} err = dec.Decode(issues)