mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-05 12:41:32 +02:00
change for api changes to go-logging
This commit is contained in:
@@ -6,8 +6,8 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/kballard/go-shellquote"
|
"github.com/kballard/go-shellquote"
|
||||||
"github.com/op/go-logging"
|
|
||||||
"gopkg.in/coryb/yaml.v2"
|
"gopkg.in/coryb/yaml.v2"
|
||||||
|
"gopkg.in/op/go-logging.v1"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/cookiejar"
|
"net/http/cookiejar"
|
||||||
@@ -100,15 +100,15 @@ func (c *Cli) loadCookies() []*http.Cookie {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to open %s: %s", c.cookieFile, err)
|
log.Errorf("Failed to open %s: %s", c.cookieFile, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
cookies := make([]*http.Cookie, 0)
|
cookies := make([]*http.Cookie, 0)
|
||||||
err = json.Unmarshal(bytes, &cookies)
|
err = json.Unmarshal(bytes, &cookies)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to parse json from file %s: %s", c.cookieFile, err)
|
log.Errorf("Failed to parse json from file %s: %s", c.cookieFile, err)
|
||||||
}
|
}
|
||||||
log.Debug("Loading Cookies: %s", cookies)
|
log.Debugf("Loading Cookies: %s", cookies)
|
||||||
return cookies
|
return cookies
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ func (c *Cli) put(uri string, content string) (*http.Response, error) {
|
|||||||
func (c *Cli) delete(uri string) (*http.Response, error) {
|
func (c *Cli) delete(uri string) (*http.Response, error) {
|
||||||
method := "DELETE"
|
method := "DELETE"
|
||||||
req, _ := http.NewRequest(method, uri, nil)
|
req, _ := http.NewRequest(method, uri, nil)
|
||||||
log.Info("%s %s", req.Method, req.URL.String())
|
log.Infof("%s %s", req.Method, req.URL.String())
|
||||||
if resp, err := c.makeRequest(req); err != nil {
|
if resp, err := c.makeRequest(req); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
@@ -142,11 +142,11 @@ func (c *Cli) makeRequestWithContent(method string, uri string, content string)
|
|||||||
buffer := bytes.NewBufferString(content)
|
buffer := bytes.NewBufferString(content)
|
||||||
req, _ := http.NewRequest(method, uri, buffer)
|
req, _ := http.NewRequest(method, uri, buffer)
|
||||||
|
|
||||||
log.Info("%s %s", req.Method, req.URL.String())
|
log.Infof("%s %s", req.Method, req.URL.String())
|
||||||
if log.IsEnabledFor(logging.DEBUG) {
|
if log.IsEnabledFor(logging.DEBUG) {
|
||||||
logBuffer := bytes.NewBuffer(make([]byte, 0, len(content)))
|
logBuffer := bytes.NewBuffer(make([]byte, 0, len(content)))
|
||||||
req.Write(logBuffer)
|
req.Write(logBuffer)
|
||||||
log.Debug("%s", logBuffer)
|
log.Debugf("%s", logBuffer)
|
||||||
// need to recreate the buffer since the offset is now at the end
|
// need to recreate the buffer since the offset is now at the end
|
||||||
// need to be able to rewind the buffer offset, dont know how yet
|
// need to be able to rewind the buffer offset, dont know how yet
|
||||||
req, _ = http.NewRequest(method, uri, bytes.NewBufferString(content))
|
req, _ = http.NewRequest(method, uri, bytes.NewBufferString(content))
|
||||||
@@ -168,11 +168,11 @@ func (c *Cli) makeRequestWithContent(method string, uri string, content string)
|
|||||||
|
|
||||||
func (c *Cli) get(uri string) (*http.Response, error) {
|
func (c *Cli) get(uri string) (*http.Response, error) {
|
||||||
req, _ := http.NewRequest("GET", uri, nil)
|
req, _ := http.NewRequest("GET", uri, nil)
|
||||||
log.Info("%s %s", req.Method, req.URL.String())
|
log.Infof("%s %s", req.Method, req.URL.String())
|
||||||
if log.IsEnabledFor(logging.DEBUG) {
|
if log.IsEnabledFor(logging.DEBUG) {
|
||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
req.Write(logBuffer)
|
req.Write(logBuffer)
|
||||||
log.Debug("%s", logBuffer)
|
log.Debugf("%s", logBuffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp, err := c.makeRequest(req); err != nil {
|
if resp, err := c.makeRequest(req); err != nil {
|
||||||
@@ -191,11 +191,11 @@ func (c *Cli) get(uri string) (*http.Response, error) {
|
|||||||
func (c *Cli) makeRequest(req *http.Request) (resp *http.Response, err error) {
|
func (c *Cli) makeRequest(req *http.Request) (resp *http.Response, err error) {
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
if resp, err = c.ua.Do(req); err != nil {
|
if resp, err = c.ua.Do(req); err != nil {
|
||||||
log.Error("Failed to %s %s: %s", req.Method, req.URL.String(), err)
|
log.Errorf("Failed to %s %s: %s", req.Method, req.URL.String(), err)
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
if resp.StatusCode < 200 || resp.StatusCode >= 300 && resp.StatusCode != 401 {
|
if resp.StatusCode < 200 || resp.StatusCode >= 300 && resp.StatusCode != 401 {
|
||||||
log.Error("response status: %s", resp.Status)
|
log.Errorf("response status: %s", resp.Status)
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime.SetFinalizer(resp, func(r *http.Response) {
|
runtime.SetFinalizer(resp, func(r *http.Response) {
|
||||||
@@ -257,14 +257,14 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
|
|
||||||
fh, err := ioutil.TempFile(tmpdir, tmpFilePrefix)
|
fh, err := ioutil.TempFile(tmpdir, tmpFilePrefix)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to make temp file in %s: %s", tmpdir, err)
|
log.Errorf("Failed to make temp file in %s: %s", tmpdir, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer fh.Close()
|
defer fh.Close()
|
||||||
|
|
||||||
tmpFileName := fmt.Sprintf("%s.yml", fh.Name())
|
tmpFileName := fmt.Sprintf("%s.yml", fh.Name())
|
||||||
if err := os.Rename(fh.Name(), tmpFileName); err != nil {
|
if err := os.Rename(fh.Name(), tmpFileName); err != nil {
|
||||||
log.Error("Failed to rename %s to %s: %s", fh.Name(), fmt.Sprintf("%s.yml", fh.Name()), err)
|
log.Errorf("Failed to rename %s to %s: %s", fh.Name(), fmt.Sprintf("%s.yml", fh.Name()), err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -301,11 +301,11 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
if editing {
|
if editing {
|
||||||
shell, _ := shellquote.Split(editor)
|
shell, _ := shellquote.Split(editor)
|
||||||
shell = append(shell, tmpFileName)
|
shell = append(shell, tmpFileName)
|
||||||
log.Debug("Running: %#v", shell)
|
log.Debugf("Running: %#v", shell)
|
||||||
cmd := exec.Command(shell[0], shell[1:]...)
|
cmd := exec.Command(shell[0], shell[1:]...)
|
||||||
cmd.Stdout, cmd.Stderr, cmd.Stdin = os.Stdout, os.Stderr, os.Stdin
|
cmd.Stdout, cmd.Stderr, cmd.Stdin = os.Stdout, os.Stderr, os.Stdin
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
log.Error("Failed to edit template with %s: %s", editor, err)
|
log.Errorf("Failed to edit template with %s: %s", editor, err)
|
||||||
if promptYN("edit again?", true) {
|
if promptYN("edit again?", true) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -321,14 +321,14 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
|
|
||||||
edited := make(map[string]interface{})
|
edited := make(map[string]interface{})
|
||||||
if fh, err := ioutil.ReadFile(tmpFileName); err != nil {
|
if fh, err := ioutil.ReadFile(tmpFileName); err != nil {
|
||||||
log.Error("Failed to read tmpfile %s: %s", tmpFileName, err)
|
log.Errorf("Failed to read tmpfile %s: %s", tmpFileName, err)
|
||||||
if editing && promptYN("edit again?", true) {
|
if editing && promptYN("edit again?", true) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
if err := yaml.Unmarshal(fh, &edited); err != nil {
|
if err := yaml.Unmarshal(fh, &edited); err != nil {
|
||||||
log.Error("Failed to parse YAML: %s", err)
|
log.Errorf("Failed to parse YAML: %s", err)
|
||||||
if editing && promptYN("edit again?", true) {
|
if editing && promptYN("edit again?", true) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -346,7 +346,7 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
// you can add the "abort: true" flag to the document
|
// you can add the "abort: true" flag to the document
|
||||||
// and we will abort now
|
// and we will abort now
|
||||||
if val, ok := edited["abort"].(bool); ok && val {
|
if val, ok := edited["abort"].(bool); ok && val {
|
||||||
log.Info("abort flag found in template, quiting")
|
log.Infof("abort flag found in template, quiting")
|
||||||
return fmt.Errorf("abort flag found in template, quiting")
|
return fmt.Errorf("abort flag found in template, quiting")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
for k := range f {
|
for k := range f {
|
||||||
if _, ok := mf.(map[string]interface{})[k]; !ok {
|
if _, ok := mf.(map[string]interface{})[k]; !ok {
|
||||||
err := fmt.Errorf("Field %s is not editable", k)
|
err := fmt.Errorf("Field %s is not editable", k)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
if editing && promptYN("edit again?", true) {
|
if editing && promptYN("edit again?", true) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -372,7 +372,7 @@ func (c *Cli) editTemplate(template string, tmpFilePrefix string, templateData m
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := templateProcessor(json); err != nil {
|
if err := templateProcessor(json); err != nil {
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
if editing && promptYN("edit again?", true) {
|
if editing && promptYN("edit again?", true) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -418,7 +418,7 @@ func (c *Cli) FindIssues() (interface{}, error) {
|
|||||||
qbuff := bytes.NewBufferString("resolution = unresolved")
|
qbuff := bytes.NewBufferString("resolution = unresolved")
|
||||||
if project, ok := c.opts["project"]; !ok {
|
if project, ok := c.opts["project"]; !ok {
|
||||||
err := fmt.Errorf("Missing required arguments, either 'query' or 'project' are required")
|
err := fmt.Errorf("Missing required arguments, either 'query' or 'project' are required")
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
qbuff.WriteString(fmt.Sprintf(" AND project = '%s'", project))
|
qbuff.WriteString(fmt.Sprintf(" AND project = '%s'", project))
|
||||||
|
|||||||
+73
-73
@@ -24,22 +24,22 @@ func (c *Cli) CmdLogin() error {
|
|||||||
passwd := string(pwbytes)
|
passwd := string(pwbytes)
|
||||||
|
|
||||||
req.SetBasicAuth(user, passwd)
|
req.SetBasicAuth(user, passwd)
|
||||||
log.Info("%s %s", req.Method, req.URL.String())
|
log.Infof("%s %s", req.Method, req.URL.String())
|
||||||
if resp, err := c.makeRequest(req); err != nil {
|
if resp, err := c.makeRequest(req); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
out, _ := httputil.DumpResponse(resp, true)
|
out, _ := httputil.DumpResponse(resp, true)
|
||||||
log.Debug("%s", out)
|
log.Debugf("%s", out)
|
||||||
if resp.StatusCode == 403 {
|
if resp.StatusCode == 403 {
|
||||||
// probably got this, need to redirect the user to login manually
|
// probably got this, need to redirect the user to login manually
|
||||||
// X-Authentication-Denied-Reason: CAPTCHA_CHALLENGE; login-url=https://jira/login.jsp
|
// X-Authentication-Denied-Reason: CAPTCHA_CHALLENGE; login-url=https://jira/login.jsp
|
||||||
if reason := resp.Header.Get("X-Authentication-Denied-Reason"); reason != "" {
|
if reason := resp.Header.Get("X-Authentication-Denied-Reason"); reason != "" {
|
||||||
err := fmt.Errorf("Authenticaion Failed: %s", reason)
|
err := fmt.Errorf("Authenticaion Failed: %s", reason)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err := fmt.Errorf("Authentication Failed: Unknown Reason")
|
err := fmt.Errorf("Authentication Failed: Unknown Reason")
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
|
|
||||||
} else if resp.StatusCode == 200 {
|
} else if resp.StatusCode == 200 {
|
||||||
@@ -60,7 +60,7 @@ func (c *Cli) CmdLogin() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdFields() error {
|
func (c *Cli) CmdFields() error {
|
||||||
log.Debug("fields called")
|
log.Debugf("fields called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/field", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/field", c.endpoint)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -71,7 +71,7 @@ func (c *Cli) CmdFields() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdList() error {
|
func (c *Cli) CmdList() error {
|
||||||
log.Debug("list called")
|
log.Debugf("list called")
|
||||||
if data, err := c.FindIssues(); err != nil {
|
if data, err := c.FindIssues(); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
@@ -80,7 +80,7 @@ func (c *Cli) CmdList() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdView(issue string) error {
|
func (c *Cli) CmdView(issue string) error {
|
||||||
log.Debug("view called")
|
log.Debugf("view called")
|
||||||
c.Browse(issue)
|
c.Browse(issue)
|
||||||
data, err := c.ViewIssue(issue)
|
data, err := c.ViewIssue(issue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -90,7 +90,7 @@ func (c *Cli) CmdView(issue string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdEdit(issue string) error {
|
func (c *Cli) CmdEdit(issue string) error {
|
||||||
log.Debug("edit called")
|
log.Debugf("edit called")
|
||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/editmeta", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/editmeta", c.endpoint, issue)
|
||||||
editmeta, err := responseToJson(c.get(uri))
|
editmeta, err := responseToJson(c.get(uri))
|
||||||
@@ -115,8 +115,8 @@ func (c *Cli) CmdEdit(issue string) error {
|
|||||||
issueData,
|
issueData,
|
||||||
func(json string) error {
|
func(json string) error {
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("PUT: %s", json)
|
log.Debugf("PUT: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping PUT")
|
log.Debugf("Dryrun mode, skipping PUT")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.put(uri, json)
|
resp, err := c.put(uri, json)
|
||||||
@@ -134,7 +134,7 @@ func (c *Cli) CmdEdit(issue string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From PUT")
|
err := fmt.Errorf("Unexpected Response From PUT")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -142,7 +142,7 @@ func (c *Cli) CmdEdit(issue string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdEditMeta(issue string) error {
|
func (c *Cli) CmdEditMeta(issue string) error {
|
||||||
log.Debug("editMeta called")
|
log.Debugf("editMeta called")
|
||||||
c.Browse(issue)
|
c.Browse(issue)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/editmeta", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/editmeta", c.endpoint, issue)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
@@ -154,7 +154,7 @@ func (c *Cli) CmdEditMeta(issue string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdTransitionMeta(issue string) error {
|
func (c *Cli) CmdTransitionMeta(issue string) error {
|
||||||
log.Debug("tranisionMeta called")
|
log.Debugf("tranisionMeta called")
|
||||||
c.Browse(issue)
|
c.Browse(issue)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions?expand=transitions.fields", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions?expand=transitions.fields", c.endpoint, issue)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
@@ -167,7 +167,7 @@ func (c *Cli) CmdTransitionMeta(issue string) error {
|
|||||||
|
|
||||||
func (c *Cli) CmdIssueTypes() error {
|
func (c *Cli) CmdIssueTypes() error {
|
||||||
project := c.opts["project"].(string)
|
project := c.opts["project"].(string)
|
||||||
log.Debug("issueTypes called")
|
log.Debugf("issueTypes called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s", c.endpoint, project)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s", c.endpoint, project)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -181,7 +181,7 @@ func (c *Cli) CmdCreateMeta() error {
|
|||||||
project := c.opts["project"].(string)
|
project := c.opts["project"].(string)
|
||||||
issuetype := c.getOptString("issuetype", "Bug")
|
issuetype := c.getOptString("issuetype", "Bug")
|
||||||
|
|
||||||
log.Debug("createMeta called")
|
log.Debugf("createMeta called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s&issuetypeNames=%s&expand=projects.issuetypes.fields", c.endpoint, project, url.QueryEscape(issuetype))
|
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s&issuetypeNames=%s&expand=projects.issuetypes.fields", c.endpoint, project, url.QueryEscape(issuetype))
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -191,7 +191,7 @@ func (c *Cli) CmdCreateMeta() error {
|
|||||||
if val, ok := data.(map[string]interface{})["projects"]; ok {
|
if val, ok := data.(map[string]interface{})["projects"]; ok {
|
||||||
if len(val.([]interface{})) == 0 {
|
if len(val.([]interface{})) == 0 {
|
||||||
err = fmt.Errorf("Project '%s' or issuetype '%s' unknown. Unable to createmeta.", project, issuetype)
|
err = fmt.Errorf("Project '%s' or issuetype '%s' unknown. Unable to createmeta.", project, issuetype)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if val, ok = val.([]interface{})[0].(map[string]interface{})["issuetypes"]; ok {
|
if val, ok = val.([]interface{})[0].(map[string]interface{})["issuetypes"]; ok {
|
||||||
@@ -203,7 +203,7 @@ func (c *Cli) CmdCreateMeta() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdComponents(project string) error {
|
func (c *Cli) CmdComponents(project string) error {
|
||||||
log.Debug("Components called")
|
log.Debugf("Components called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/project/%s/components", c.endpoint, project)
|
uri := fmt.Sprintf("%s/rest/api/2/project/%s/components", c.endpoint, project)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -213,7 +213,7 @@ func (c *Cli) CmdComponents(project string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdTransitions(issue string) error {
|
func (c *Cli) CmdTransitions(issue string) error {
|
||||||
log.Debug("Transitions called")
|
log.Debugf("Transitions called")
|
||||||
c.Browse(issue)
|
c.Browse(issue)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions", c.endpoint, issue)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
@@ -226,7 +226,7 @@ func (c *Cli) CmdTransitions(issue string) error {
|
|||||||
func (c *Cli) CmdCreate() error {
|
func (c *Cli) CmdCreate() error {
|
||||||
project := c.opts["project"].(string)
|
project := c.opts["project"].(string)
|
||||||
issuetype := c.getOptString("issuetype", "Bug")
|
issuetype := c.getOptString("issuetype", "Bug")
|
||||||
log.Debug("create called")
|
log.Debugf("create called")
|
||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s&issuetypeNames=%s&expand=projects.issuetypes.fields", c.endpoint, project, url.QueryEscape(issuetype))
|
uri := fmt.Sprintf("%s/rest/api/2/issue/createmeta?projectKeys=%s&issuetypeNames=%s&expand=projects.issuetypes.fields", c.endpoint, project, url.QueryEscape(issuetype))
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
@@ -241,13 +241,13 @@ func (c *Cli) CmdCreate() error {
|
|||||||
if val, ok := data.(map[string]interface{})["projects"]; ok {
|
if val, ok := data.(map[string]interface{})["projects"]; ok {
|
||||||
if len(val.([]interface{})) == 0 {
|
if len(val.([]interface{})) == 0 {
|
||||||
err = fmt.Errorf("Project '%s' or issuetype '%s' unknown. Unable to create issue.", project, issuetype)
|
err = fmt.Errorf("Project '%s' or issuetype '%s' unknown. Unable to create issue.", project, issuetype)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if val, ok = val.([]interface{})[0].(map[string]interface{})["issuetypes"]; ok {
|
if val, ok = val.([]interface{})[0].(map[string]interface{})["issuetypes"]; ok {
|
||||||
if len(val.([]interface{})) == 0 {
|
if len(val.([]interface{})) == 0 {
|
||||||
err = fmt.Errorf("Project '%s' does not support issuetype '%s'. Unable to create issue.", project, issuetype)
|
err = fmt.Errorf("Project '%s' does not support issuetype '%s'. Unable to create issue.", project, issuetype)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
issueData["meta"] = val.([]interface{})[0]
|
issueData["meta"] = val.([]interface{})[0]
|
||||||
@@ -260,11 +260,11 @@ func (c *Cli) CmdCreate() error {
|
|||||||
fmt.Sprintf("create-%s-", sanitizedType),
|
fmt.Sprintf("create-%s-", sanitizedType),
|
||||||
issueData,
|
issueData,
|
||||||
func(json string) error {
|
func(json string) error {
|
||||||
log.Debug("JSON: %s", json)
|
log.Debugf("JSON: %s", json)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/issue", c.endpoint)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -293,7 +293,7 @@ func (c *Cli) CmdCreate() error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -302,7 +302,7 @@ func (c *Cli) CmdCreate() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdIssueLinkTypes() error {
|
func (c *Cli) CmdIssueLinkTypes() error {
|
||||||
log.Debug("Transitions called")
|
log.Debugf("Transitions called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issueLinkType", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/issueLinkType", c.endpoint)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -312,7 +312,7 @@ func (c *Cli) CmdIssueLinkTypes() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdBlocks(blocker string, issue string) error {
|
func (c *Cli) CmdBlocks(blocker string, issue string) error {
|
||||||
log.Debug("blocks called")
|
log.Debugf("blocks called")
|
||||||
|
|
||||||
json, err := jsonEncode(map[string]interface{}{
|
json, err := jsonEncode(map[string]interface{}{
|
||||||
"type": map[string]string{
|
"type": map[string]string{
|
||||||
@@ -331,8 +331,8 @@ func (c *Cli) CmdBlocks(blocker string, issue string) error {
|
|||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issueLink", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/issueLink", c.endpoint)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -348,14 +348,14 @@ func (c *Cli) CmdBlocks(blocker string, issue string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdDups(duplicate string, issue string) error {
|
func (c *Cli) CmdDups(duplicate string, issue string) error {
|
||||||
log.Debug("dups called")
|
log.Debugf("dups called")
|
||||||
|
|
||||||
json, err := jsonEncode(map[string]interface{}{
|
json, err := jsonEncode(map[string]interface{}{
|
||||||
"type": map[string]string{
|
"type": map[string]string{
|
||||||
@@ -374,8 +374,8 @@ func (c *Cli) CmdDups(duplicate string, issue string) error {
|
|||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issueLink", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/issueLink", c.endpoint)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -391,14 +391,14 @@ func (c *Cli) CmdDups(duplicate string, issue string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdWatch(issue string, watcher string, remove bool) error {
|
func (c *Cli) CmdWatch(issue string, watcher string, remove bool) error {
|
||||||
log.Debug("watch called: watcher: %q, remove: %n", watcher, remove)
|
log.Debugf("watch called: watcher: %q, remove: %n", watcher, remove)
|
||||||
|
|
||||||
var uri string
|
var uri string
|
||||||
json, err := jsonEncode(watcher)
|
json, err := jsonEncode(watcher)
|
||||||
@@ -408,11 +408,11 @@ func (c *Cli) CmdWatch(issue string, watcher string, remove bool) error {
|
|||||||
|
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
if !remove {
|
if !remove {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
} else {
|
} else {
|
||||||
log.Debug("DELETE: %s", watcher)
|
log.Debugf("DELETE: %s", watcher)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -441,23 +441,23 @@ func (c *Cli) CmdWatch(issue string, watcher string, remove bool) error {
|
|||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("Unexpected Response From DELETE")
|
err = fmt.Errorf("Unexpected Response From DELETE")
|
||||||
}
|
}
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdVote(issue string, up bool) error {
|
func (c *Cli) CmdVote(issue string, up bool) error {
|
||||||
log.Debug("vote called, with up: %n", up)
|
log.Debugf("vote called, with up: %n", up)
|
||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/votes", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/votes", c.endpoint, issue)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
if up {
|
if up {
|
||||||
log.Debug("POST: %s", "")
|
log.Debugf("POST: %s", "")
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
} else {
|
} else {
|
||||||
log.Debug("DELETE: %s", "")
|
log.Debugf("DELETE: %s", "")
|
||||||
log.Debug("Dryrun mode, skipping DELETE")
|
log.Debugf("Dryrun mode, skipping DELETE")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -484,14 +484,14 @@ func (c *Cli) CmdVote(issue string, up bool) error {
|
|||||||
} else {
|
} else {
|
||||||
err = fmt.Errorf("Unexpected Response From DELETE")
|
err = fmt.Errorf("Unexpected Response From DELETE")
|
||||||
}
|
}
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdTransition(issue string, trans string) error {
|
func (c *Cli) CmdTransition(issue string, trans string) error {
|
||||||
log.Debug("transition called")
|
log.Debugf("transition called")
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions?expand=transitions.fields", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/transitions?expand=transitions.fields", c.endpoint, issue)
|
||||||
data, err := responseToJson(c.get(uri))
|
data, err := responseToJson(c.get(uri))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -514,17 +514,17 @@ func (c *Cli) CmdTransition(issue string, trans string) error {
|
|||||||
}
|
}
|
||||||
if transId == "" {
|
if transId == "" {
|
||||||
err := fmt.Errorf("Invalid Transition '%s', Available: %s", trans, strings.Join(found, ", "))
|
err := fmt.Errorf("Invalid Transition '%s', Available: %s", trans, strings.Join(found, ", "))
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
handlePost := func(json string) error {
|
handlePost := func(json string) error {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
// os.Exit(0)
|
// os.Exit(0)
|
||||||
uri = fmt.Sprintf("%s/rest/api/2/issue/%s/transitions", c.endpoint, issue)
|
uri = fmt.Sprintf("%s/rest/api/2/issue/%s/transitions", c.endpoint, issue)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -540,7 +540,7 @@ func (c *Cli) CmdTransition(issue string, trans string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -569,14 +569,14 @@ func (c *Cli) CmdTransition(issue string, trans string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdComment(issue string) error {
|
func (c *Cli) CmdComment(issue string) error {
|
||||||
log.Debug("comment called")
|
log.Debugf("comment called")
|
||||||
|
|
||||||
handlePost := func(json string) error {
|
handlePost := func(json string) error {
|
||||||
log.Debug("JSON: %s", json)
|
log.Debugf("JSON: %s", json)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/comment", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/comment", c.endpoint, issue)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -594,7 +594,7 @@ func (c *Cli) CmdComment(issue string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -619,7 +619,7 @@ func (c *Cli) CmdComment(issue string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdComponent(action string, project string, name string, desc string, lead string) error {
|
func (c *Cli) CmdComponent(action string, project string, name string, desc string, lead string) error {
|
||||||
log.Debug("component called")
|
log.Debugf("component called")
|
||||||
|
|
||||||
switch action {
|
switch action {
|
||||||
case "add":
|
case "add":
|
||||||
@@ -639,8 +639,8 @@ func (c *Cli) CmdComponent(action string, project string, name string, desc stri
|
|||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/component", c.endpoint)
|
uri := fmt.Sprintf("%s/rest/api/2/component", c.endpoint)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("POST: %s", json)
|
log.Debugf("POST: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.post(uri, json)
|
resp, err := c.post(uri, json)
|
||||||
@@ -655,25 +655,25 @@ func (c *Cli) CmdComponent(action string, project string, name string, desc stri
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From POST")
|
err := fmt.Errorf("Unexpected Response From POST")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdLabels(action string, issue string, labels []string) error {
|
func (c *Cli) CmdLabels(action string, issue string, labels []string) error {
|
||||||
log.Debug("label called")
|
log.Debugf("label called")
|
||||||
|
|
||||||
if action != "add" && action != "remove" && action != "set" {
|
if action != "add" && action != "remove" && action != "set" {
|
||||||
return fmt.Errorf("action must be 'add', 'set' or 'remove': %q is invalid", action)
|
return fmt.Errorf("action must be 'add', 'set' or 'remove': %q is invalid", action)
|
||||||
}
|
}
|
||||||
|
|
||||||
handlePut := func(json string) error {
|
handlePut := func(json string) error {
|
||||||
log.Debug("JSON: %s", json)
|
log.Debugf("JSON: %s", json)
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s", c.endpoint, issue)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("PUT: %s", json)
|
log.Debugf("PUT: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping POST")
|
log.Debugf("Dryrun mode, skipping POST")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.put(uri, json)
|
resp, err := c.put(uri, json)
|
||||||
@@ -691,7 +691,7 @@ func (c *Cli) CmdLabels(action string, issue string, labels []string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From PUT")
|
err := fmt.Errorf("Unexpected Response From PUT")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -727,7 +727,7 @@ func (c *Cli) CmdLabels(action string, issue string, labels []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdAssign(issue string, user string) error {
|
func (c *Cli) CmdAssign(issue string, user string) error {
|
||||||
log.Debug("assign called")
|
log.Debugf("assign called")
|
||||||
|
|
||||||
json, err := jsonEncode(map[string]interface{}{
|
json, err := jsonEncode(map[string]interface{}{
|
||||||
"name": user,
|
"name": user,
|
||||||
@@ -738,8 +738,8 @@ func (c *Cli) CmdAssign(issue string, user string) error {
|
|||||||
|
|
||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/assignee", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/assignee", c.endpoint, issue)
|
||||||
if c.getOptBool("dryrun", false) {
|
if c.getOptBool("dryrun", false) {
|
||||||
log.Debug("PUT: %s", json)
|
log.Debugf("PUT: %s", json)
|
||||||
log.Debug("Dryrun mode, skipping PUT")
|
log.Debugf("Dryrun mode, skipping PUT")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
resp, err := c.put(uri, json)
|
resp, err := c.put(uri, json)
|
||||||
@@ -755,7 +755,7 @@ func (c *Cli) CmdAssign(issue string, user string) error {
|
|||||||
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
logBuffer := bytes.NewBuffer(make([]byte, 0))
|
||||||
resp.Write(logBuffer)
|
resp.Write(logBuffer)
|
||||||
err := fmt.Errorf("Unexpected Response From PUT")
|
err := fmt.Errorf("Unexpected Response From PUT")
|
||||||
log.Error("%s:\n%s", err, logBuffer)
|
log.Errorf("%s:\n%s", err, logBuffer)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -777,11 +777,11 @@ func (c *Cli) CmdExportTemplates() error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if fh, err := os.OpenFile(templateFile, os.O_WRONLY|os.O_CREATE, 0644); err != nil {
|
if fh, err := os.OpenFile(templateFile, os.O_WRONLY|os.O_CREATE, 0644); err != nil {
|
||||||
log.Error("Failed to open %s for writing: %s", templateFile, err)
|
log.Errorf("Failed to open %s for writing: %s", templateFile, err)
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
defer fh.Close()
|
defer fh.Close()
|
||||||
log.Notice("Creating %s", templateFile)
|
log.Noticef("Creating %s", templateFile)
|
||||||
fh.Write([]byte(template))
|
fh.Write([]byte(template))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -789,7 +789,7 @@ func (c *Cli) CmdExportTemplates() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cli) CmdRequest(uri, content string) (err error) {
|
func (c *Cli) CmdRequest(uri, content string) (err error) {
|
||||||
log.Debug("request called")
|
log.Debugf("request called")
|
||||||
|
|
||||||
if !strings.HasPrefix(uri, "http") {
|
if !strings.HasPrefix(uri, "http") {
|
||||||
uri = fmt.Sprintf("%s%s", c.endpoint, uri)
|
uri = fmt.Sprintf("%s%s", c.endpoint, uri)
|
||||||
|
|||||||
+18
-18
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Netflix-Skunkworks/go-jira"
|
"github.com/Netflix-Skunkworks/go-jira"
|
||||||
"github.com/coryb/optigo"
|
"github.com/coryb/optigo"
|
||||||
"github.com/op/go-logging"
|
|
||||||
"gopkg.in/coryb/yaml.v2"
|
"gopkg.in/coryb/yaml.v2"
|
||||||
|
"gopkg.in/op/go-logging.v1"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@@ -217,7 +217,7 @@ Command Options:
|
|||||||
})
|
})
|
||||||
|
|
||||||
if err := op.ProcessAll(os.Args[1:]); err != nil {
|
if err := op.ProcessAll(os.Args[1:]); err != nil {
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
usage(false)
|
usage(false)
|
||||||
}
|
}
|
||||||
args := op.Args
|
args := op.Args
|
||||||
@@ -258,36 +258,36 @@ Command Options:
|
|||||||
// apply defaults
|
// apply defaults
|
||||||
for k, v := range defaults {
|
for k, v := range defaults {
|
||||||
if _, ok := opts[k]; !ok {
|
if _, ok := opts[k]; !ok {
|
||||||
log.Debug("Setting %q to %#v from defaults", k, v)
|
log.Debugf("Setting %q to %#v from defaults", k, v)
|
||||||
opts[k] = v
|
opts[k] = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debug("opts: %v", opts)
|
log.Debugf("opts: %v", opts)
|
||||||
log.Debug("args: %v", args)
|
log.Debugf("args: %v", args)
|
||||||
|
|
||||||
if _, ok := opts["endpoint"]; !ok {
|
if _, ok := opts["endpoint"]; !ok {
|
||||||
log.Error("endpoint option required. Either use --endpoint or set a endpoint option in your ~/.jira.d/config.yml file")
|
log.Errorf("endpoint option required. Either use --endpoint or set a endpoint option in your ~/.jira.d/config.yml file")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
c := jira.New(opts)
|
c := jira.New(opts)
|
||||||
|
|
||||||
log.Debug("opts: %s", opts)
|
log.Debugf("opts: %s", opts)
|
||||||
|
|
||||||
setEditing := func(dflt bool) {
|
setEditing := func(dflt bool) {
|
||||||
log.Debug("Default Editing: %t", dflt)
|
log.Debugf("Default Editing: %t", dflt)
|
||||||
if dflt {
|
if dflt {
|
||||||
if val, ok := opts["noedit"].(bool); ok && val {
|
if val, ok := opts["noedit"].(bool); ok && val {
|
||||||
log.Debug("Setting edit = false")
|
log.Debugf("Setting edit = false")
|
||||||
opts["edit"] = false
|
opts["edit"] = false
|
||||||
} else {
|
} else {
|
||||||
log.Debug("Setting edit = true")
|
log.Debugf("Setting edit = true")
|
||||||
opts["edit"] = true
|
opts["edit"] = true
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if _, ok := opts["edit"].(bool); !ok {
|
if _, ok := opts["edit"].(bool); !ok {
|
||||||
log.Debug("Setting edit = %t", dflt)
|
log.Debugf("Setting edit = %t", dflt)
|
||||||
opts["edit"] = dflt
|
opts["edit"] = dflt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,7 +295,7 @@ Command Options:
|
|||||||
|
|
||||||
requireArgs := func(count int) {
|
requireArgs := func(count int) {
|
||||||
if len(args) < count {
|
if len(args) < count {
|
||||||
log.Error("Not enough arguments. %d required, %d provided", count, len(args))
|
log.Errorf("Not enough arguments. %d required, %d provided", count, len(args))
|
||||||
usage(false)
|
usage(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -446,12 +446,12 @@ Command Options:
|
|||||||
}
|
}
|
||||||
err = c.CmdRequest(args[0], data)
|
err = c.CmdRequest(args[0], data)
|
||||||
default:
|
default:
|
||||||
log.Error("Unknown command %s", command)
|
log.Errorf("Unknown command %s", command)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
@@ -459,7 +459,7 @@ Command Options:
|
|||||||
|
|
||||||
func parseYaml(file string, opts map[string]interface{}) {
|
func parseYaml(file string, opts map[string]interface{}) {
|
||||||
if fh, err := ioutil.ReadFile(file); err == nil {
|
if fh, err := ioutil.ReadFile(file); err == nil {
|
||||||
log.Debug("Found Config file: %s", file)
|
log.Debugf("Found Config file: %s", file)
|
||||||
yaml.Unmarshal(fh, &opts)
|
yaml.Unmarshal(fh, &opts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -499,21 +499,21 @@ func loadConfigs(opts map[string]interface{}) {
|
|||||||
if stat.Mode()&0111 == 0 {
|
if stat.Mode()&0111 == 0 {
|
||||||
parseYaml(file, tmp)
|
parseYaml(file, tmp)
|
||||||
} else {
|
} else {
|
||||||
log.Debug("Found Executable Config file: %s", file)
|
log.Debugf("Found Executable Config file: %s", file)
|
||||||
// it is executable, so run it and try to parse the output
|
// it is executable, so run it and try to parse the output
|
||||||
cmd := exec.Command(file)
|
cmd := exec.Command(file)
|
||||||
stdout := bytes.NewBufferString("")
|
stdout := bytes.NewBufferString("")
|
||||||
cmd.Stdout = stdout
|
cmd.Stdout = stdout
|
||||||
cmd.Stderr = bytes.NewBufferString("")
|
cmd.Stderr = bytes.NewBufferString("")
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
log.Error("%s is exectuable, but it failed to execute: %s\n%s", file, err, cmd.Stderr)
|
log.Errorf("%s is exectuable, but it failed to execute: %s\n%s", file, err, cmd.Stderr)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
yaml.Unmarshal(stdout.Bytes(), &tmp)
|
yaml.Unmarshal(stdout.Bytes(), &tmp)
|
||||||
}
|
}
|
||||||
for k, v := range tmp {
|
for k, v := range tmp {
|
||||||
if _, ok := opts[k]; !ok {
|
if _, ok := opts[k]; !ok {
|
||||||
log.Debug("Setting %q to %#v from %s", k, v, file)
|
log.Debugf("Setting %q to %#v from %s", k, v, file)
|
||||||
opts[k] = v
|
opts[k] = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func readFile(file string) string {
|
|||||||
var bytes []byte
|
var bytes []byte
|
||||||
var err error
|
var err error
|
||||||
if bytes, err = ioutil.ReadFile(file); err != nil {
|
if bytes, err = ioutil.ReadFile(file); err != nil {
|
||||||
log.Error("Failed to read file %s: %s", file, err)
|
log.Errorf("Failed to read file %s: %s", file, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
return string(bytes)
|
return string(bytes)
|
||||||
@@ -195,11 +195,11 @@ func runTemplate(templateContent string, data interface{}, out io.Writer) error
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
if tmpl, err := template.New("template").Funcs(funcs).Parse(templateContent); err != nil {
|
if tmpl, err := template.New("template").Funcs(funcs).Parse(templateContent); err != nil {
|
||||||
log.Error("Failed to parse template: %s", err)
|
log.Errorf("Failed to parse template: %s", err)
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
if err := tmpl.Execute(out, data); err != nil {
|
if err := tmpl.Execute(out, data); err != nil {
|
||||||
log.Error("Failed to execute template: %s", err)
|
log.Errorf("Failed to execute template: %s", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,7 +215,7 @@ func responseToJson(resp *http.Response, err error) (interface{}, error) {
|
|||||||
if resp.StatusCode == 400 {
|
if resp.StatusCode == 400 {
|
||||||
if val, ok := data.(map[string]interface{})["errorMessages"]; ok {
|
if val, ok := data.(map[string]interface{})["errorMessages"]; ok {
|
||||||
for _, errMsg := range val.([]interface{}) {
|
for _, errMsg := range val.([]interface{}) {
|
||||||
log.Error("%s", errMsg)
|
log.Errorf("%s", errMsg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -228,7 +228,7 @@ func jsonDecode(io io.Reader) interface{} {
|
|||||||
var data interface{}
|
var data interface{}
|
||||||
err = json.Unmarshal(content, &data)
|
err = json.Unmarshal(content, &data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("JSON Parse Error: %s from %s", err, content)
|
log.Errorf("JSON Parse Error: %s from %s", err, content)
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
@@ -239,7 +239,7 @@ func jsonEncode(data interface{}) (string, error) {
|
|||||||
|
|
||||||
err := enc.Encode(data)
|
err := enc.Encode(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to encode data %s: %s", data, err)
|
log.Errorf("Failed to encode data %s: %s", data, err)
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return buffer.String(), nil
|
return buffer.String(), nil
|
||||||
@@ -249,7 +249,7 @@ func jsonWrite(file string, data interface{}) {
|
|||||||
fh, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
fh, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||||
defer fh.Close()
|
defer fh.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to open %s: %s", file, err)
|
log.Errorf("Failed to open %s: %s", file, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
enc := json.NewEncoder(fh)
|
enc := json.NewEncoder(fh)
|
||||||
@@ -260,11 +260,11 @@ func yamlWrite(file string, data interface{}) {
|
|||||||
fh, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
fh, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||||
defer fh.Close()
|
defer fh.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to open %s: %s", file, err)
|
log.Errorf("Failed to open %s: %s", file, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
if out, err := yaml.Marshal(data); err != nil {
|
if out, err := yaml.Marshal(data); err != nil {
|
||||||
log.Error("Failed to marshal yaml %v: %s", data, err)
|
log.Errorf("Failed to marshal yaml %v: %s", data, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
} else {
|
} else {
|
||||||
fh.Write(out)
|
fh.Write(out)
|
||||||
@@ -306,7 +306,7 @@ func yamlFixup(data interface{}) (interface{}, error) {
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
err := fmt.Errorf("YAML: key %s is type '%T', require 'string'", key, k)
|
err := fmt.Errorf("YAML: key %s is type '%T', require 'string'", key, k)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -343,16 +343,16 @@ func yamlFixup(data interface{}) (interface{}, error) {
|
|||||||
|
|
||||||
func mkdir(dir string) error {
|
func mkdir(dir string) error {
|
||||||
if stat, err := os.Stat(dir); err != nil && !os.IsNotExist(err) {
|
if stat, err := os.Stat(dir); err != nil && !os.IsNotExist(err) {
|
||||||
log.Error("Failed to stat %s: %s", dir, err)
|
log.Errorf("Failed to stat %s: %s", dir, err)
|
||||||
return err
|
return err
|
||||||
} else if err == nil && !stat.IsDir() {
|
} else if err == nil && !stat.IsDir() {
|
||||||
err := fmt.Errorf("%s exists and is not a directory!", dir)
|
err := fmt.Errorf("%s exists and is not a directory!", dir)
|
||||||
log.Error("%s", err)
|
log.Errorf("%s", err)
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
// dir does not exist, so try to create it
|
// dir does not exist, so try to create it
|
||||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||||
log.Error("Failed to mkdir -p %s: %s", dir, err)
|
log.Errorf("Failed to mkdir -p %s: %s", dir, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user