mirror of
https://github.com/Threnklyn/jira.git
synced 2026-05-30 01:38:28 +02:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4dea068113 | |||
| 28e4554fe3 | |||
| 065f9c8d77 | |||
| 9f433acaa0 | |||
| e4c10be811 | |||
| 4c6b36c83a | |||
| a8eaa97de1 | |||
| cd3cfd820f | |||
| a04c3a4c61 | |||
| bb66e58dfd | |||
| e21f18e987 | |||
| 96bbbd7ce3 | |||
| 3e8b9bd9f5 | |||
| 8fe0d98d54 | |||
| 1a3eaf340c | |||
| 96b4658dcb | |||
| c9d8dfbe55 |
@@ -1,5 +1,17 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 1.0.10 - 2017-09-18
|
||||||
|
|
||||||
|
* clean up usage formatting, print aliases [Cory Bennett] [[9f433ac](https://github.com/Netflix-Skunkworks/go-jira/commit/9f433ac)]
|
||||||
|
* fix edit [Cory Bennett] [[4c6b36c](https://github.com/Netflix-Skunkworks/go-jira/commit/4c6b36c)]
|
||||||
|
* fix named query template expansion [Cory Bennett] [[a8eaa97](https://github.com/Netflix-Skunkworks/go-jira/commit/a8eaa97)]
|
||||||
|
* fix usage message [Cory Bennett] [[cd3cfd8](https://github.com/Netflix-Skunkworks/go-jira/commit/cd3cfd8)]
|
||||||
|
|
||||||
|
## 1.0.9 - 2017-09-17
|
||||||
|
|
||||||
|
* need issuetype to use the default list table template now [Cory Bennett] [[3e8b9bd](https://github.com/Netflix-Skunkworks/go-jira/commit/3e8b9bd)]
|
||||||
|
* [[#102](https://github.com/Netflix-Skunkworks/go-jira/issues/102)] add issuetype into the default queryfields and add it to the default `table` list template [Cory Bennett] [[c9d8dfb](https://github.com/Netflix-Skunkworks/go-jira/commit/c9d8dfb)]
|
||||||
|
|
||||||
## 1.0.8 - 2017-09-17
|
## 1.0.8 - 2017-09-17
|
||||||
|
|
||||||
* [[#100](https://github.com/Netflix-Skunkworks/go-jira/issues/100)] add support for posting, fetching, listing and removing attachments [Cory Bennett] [[66eb7bf](https://github.com/Netflix-Skunkworks/go-jira/commit/66eb7bf)]
|
* [[#100](https://github.com/Netflix-Skunkworks/go-jira/issues/100)] add support for posting, fetching, listing and removing attachments [Cory Bennett] [[66eb7bf](https://github.com/Netflix-Skunkworks/go-jira/commit/66eb7bf)]
|
||||||
|
|||||||
@@ -68,9 +68,9 @@ update-changelog:
|
|||||||
release:
|
release:
|
||||||
perl -pi -e 'undef $$/; s/\n```\nusage.*```//sg' README.md
|
perl -pi -e 'undef $$/; s/\n```\nusage.*```//sg' README.md
|
||||||
echo '```' >> README.md
|
echo '```' >> README.md
|
||||||
./jira --help-long >> README.md || true
|
./jira --help >> README.md || true
|
||||||
echo '```' >> README.md
|
echo '```' >> README.md
|
||||||
git diff --shortstat README.md | grep -v . || git commit -m "Updated Usage" README.md
|
git diff --exit-code --quiet README.md || git commit -m "Updated Usage" README.md
|
||||||
git commit -m "Updated Changelog" CHANGELOG.md
|
git commit -m "Updated Changelog" CHANGELOG.md
|
||||||
git commit -m "version bump" jira.go
|
git commit -m "version bump" jira.go
|
||||||
git tag v$(NEWVER)
|
git tag v$(NEWVER)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[](https://gitter.im/go-jira-cli/help?utm_source=badge&utm_medium=badge&utm_content=badge)
|
[](https://gitter.im/go-jira-cli/help?utm_source=badge&utm_medium=badge&utm_content=badge)
|
||||||
[](https://travis-ci.org/Netflix-Skunkworks/go-jira)
|
[](https://travis-ci.org/Netflix-Skunkworks/go-jira)
|
||||||
[](https://godoc.org/gopkg.in/Netflix-Skunkworks/go-jira.v1)
|
[](https://godoc.org/gopkg.in/Netflix-Skunkworks/go-jira.v1)
|
||||||
[](https://opensource.org/licenses/Apache-2.0)
|
[](https://opensource.org/licenses/Apache-2.0)
|
||||||
|
|
||||||
# go-jira
|
# go-jira
|
||||||
@@ -395,449 +395,4 @@ export GPG_TTY=$(tty)
|
|||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```
|
```
|
||||||
usage: jira [<flags>] <command> [<args> ...]
|
|
||||||
|
|
||||||
Jira Command Line Interface
|
|
||||||
|
|
||||||
Flags:
|
|
||||||
--help Show context-sensitive help (also try --help-long and --help-man).
|
|
||||||
-v, --verbose ... Increase verbosity for debugging
|
|
||||||
-e, --endpoint=ENDPOINT Base URI to use for Jira
|
|
||||||
-k, --insecure Disable TLS certificate verification
|
|
||||||
-Q, --quiet Suppress output to console
|
|
||||||
--unixproxy=UNIXPROXY Path for a unix-socket proxy
|
|
||||||
-u, --user=USER Login name used for authentication with Jira service
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
help [<command>...]
|
|
||||||
Show help.
|
|
||||||
|
|
||||||
|
|
||||||
version
|
|
||||||
Prints version
|
|
||||||
|
|
||||||
|
|
||||||
login
|
|
||||||
Attempt to login into jira server
|
|
||||||
|
|
||||||
|
|
||||||
logout
|
|
||||||
Deactivate sesssion with Jira server
|
|
||||||
|
|
||||||
|
|
||||||
list [<flags>]
|
|
||||||
Prints list of issues for given search criteria
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-a, --assignee=ASSIGNEE User assigned the issue
|
|
||||||
-c, --component=COMPONENT Component to search for
|
|
||||||
-i, --issuetype=ISSUETYPE Issue type to search for
|
|
||||||
-l, --limit=LIMIT Maximum number of results to return in search
|
|
||||||
-p, --project=PROJECT Project to search for
|
|
||||||
-n, --named-query=NAMED-QUERY The name of a query in the `queries` configuration
|
|
||||||
-q, --query=QUERY Jira Query Language (JQL) expression for the search
|
|
||||||
-f, --queryfields=QUERYFIELDS Fields that are used in "list" template
|
|
||||||
-r, --reporter=REPORTER Reporter to search for
|
|
||||||
-S, --status=STATUS Filter on issue status
|
|
||||||
-s, --sort=SORT Sort order to return
|
|
||||||
-w, --watcher=WATCHER Watcher to search for
|
|
||||||
|
|
||||||
view [<flags>] <ISSUE>
|
|
||||||
Prints issue details
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
--expand=EXPAND ... field to expand for the issue
|
|
||||||
--field=FIELD ... field to return for the issue
|
|
||||||
--property=PROPERTY ... property to return for issue
|
|
||||||
|
|
||||||
create [<flags>]
|
|
||||||
Create issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-p, --project=PROJECT project to create issue in
|
|
||||||
-i, --issuetype=ISSUETYPE issuetype in to create
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
--saveFile=SAVEFILE Write issue as yaml to file
|
|
||||||
|
|
||||||
edit [<flags>] [<ISSUE>]
|
|
||||||
Edit issue details
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-n, --named-query=NAMED-QUERY The name of a query in the `queries` configuration
|
|
||||||
-q, --query=QUERY Jira Query Language (JQL) expression for the search to edit multiple issues
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
comment [<flags>] [<ISSUE>]
|
|
||||||
Add comment to issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
|
|
||||||
epic create [<flags>]
|
|
||||||
Create Epic
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-p, --project=PROJECT project to create epic in
|
|
||||||
-n, --epic-name=EPIC-NAME Epic Name
|
|
||||||
-m, --comment=COMMENT Comment message for epic
|
|
||||||
-o, --override=OVERRIDE ... Set epic property
|
|
||||||
--saveFile=SAVEFILE Write epic as yaml to file
|
|
||||||
|
|
||||||
epic list [<flags>] <EPIC>
|
|
||||||
Prints list of issues for an epic with optional search criteria
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-a, --assignee=ASSIGNEE User assigned the issue
|
|
||||||
-c, --component=COMPONENT Component to search for
|
|
||||||
-i, --issuetype=ISSUETYPE Issue type to search for
|
|
||||||
-l, --limit=LIMIT Maximum number of results to return in search
|
|
||||||
-p, --project=PROJECT Project to search for
|
|
||||||
-n, --named-query=NAMED-QUERY The name of a query in the `queries` configuration
|
|
||||||
-q, --query=QUERY Jira Query Language (JQL) expression for the search
|
|
||||||
-f, --queryfields=QUERYFIELDS Fields that are used in "list" template
|
|
||||||
-r, --reporter=REPORTER Reporter to search for
|
|
||||||
-S, --status=STATUS Filter on issue status
|
|
||||||
-s, --sort=SORT Sort order to return
|
|
||||||
-w, --watcher=WATCHER Watcher to search for
|
|
||||||
|
|
||||||
epic add <EPIC> <ISSUE>...
|
|
||||||
Add issues to Epic
|
|
||||||
|
|
||||||
|
|
||||||
epic remove <ISSUE>...
|
|
||||||
Remove issues from Epic
|
|
||||||
|
|
||||||
|
|
||||||
worklog list [<flags>] <ISSUE>
|
|
||||||
Prints the worklog data for given issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
worklog add [<flags>] <ISSUE>
|
|
||||||
Add a worklog to an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for worklog
|
|
||||||
-T, --time-spent=TIME-SPENT Time spent working on issue
|
|
||||||
-S, --started=STARTED Time you started work
|
|
||||||
|
|
||||||
fields [<flags>]
|
|
||||||
Prints all fields, both System and Custom
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
createmeta [<flags>]
|
|
||||||
View 'create' metadata
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-p, --project=PROJECT project to fetch create metadata
|
|
||||||
-i, --issuetype=ISSUETYPE issuetype in project to fetch create metadata
|
|
||||||
|
|
||||||
editmeta [<flags>] <ISSUE>
|
|
||||||
View 'edit' metadata
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
subtask [<flags>] [<ISSUE>]
|
|
||||||
Subtask issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-p, --project=PROJECT project to subtask issue in
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
dup [<flags>] <DUPLICATE> <ISSUE>
|
|
||||||
Mark issues as duplicate
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
-m, --comment=COMMENT Comment message when marking issue as duplicate
|
|
||||||
|
|
||||||
block [<flags>] <BLOCKER> <ISSUE>
|
|
||||||
Mark issues as blocker
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
-m, --comment=COMMENT Comment message when marking issue as blocker
|
|
||||||
|
|
||||||
issuelink [<flags>] <OUTWARDISSUE> <ISSUELINKTYPE> <INWARDISSUE>
|
|
||||||
Link two issues
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
-m, --comment=COMMENT Comment message when linking issue
|
|
||||||
|
|
||||||
issuelinktypes [<flags>]
|
|
||||||
Show the issue link types
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
transition [<flags>] <TRANSITION> <ISSUE>
|
|
||||||
Transition issue to given state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
transitions [<flags>] <ISSUE>
|
|
||||||
List valid issue transitions
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
transmeta [<flags>] <ISSUE>
|
|
||||||
List valid issue transitions
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
|
|
||||||
close [<flags>] <ISSUE>
|
|
||||||
Transition issue to close state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
acknowledge [<flags>] <ISSUE>
|
|
||||||
Transition issue to acknowledge state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
reopen [<flags>] <ISSUE>
|
|
||||||
Transition issue to reopen state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
resolve [<flags>] <ISSUE>
|
|
||||||
Transition issue to resolve state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
start [<flags>] <ISSUE>
|
|
||||||
Transition issue to start state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
stop [<flags>] <ISSUE>
|
|
||||||
Transition issue to stop state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
todo [<flags>] <ISSUE>
|
|
||||||
Transition issue to To Do state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
backlog [<flags>] <ISSUE>
|
|
||||||
Transition issue to Backlog state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
done [<flags>] <ISSUE>
|
|
||||||
Transition issue to Done state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
in-progress [<flags>] <ISSUE>
|
|
||||||
Transition issue to Progress state
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-m, --comment=COMMENT Comment message for issue
|
|
||||||
-o, --override=OVERRIDE ... Set issue property
|
|
||||||
|
|
||||||
vote [<flags>] [<ISSUE>]
|
|
||||||
Vote up/down an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-d, --down downvote the issue
|
|
||||||
|
|
||||||
rank [<flags>] <FIRST-ISSUE> <after|before> <SECOND-ISSUE>
|
|
||||||
Mark issues as blocker
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
|
|
||||||
watch [<flags>] <ISSUE> [<WATCHER>]
|
|
||||||
Add/Remove watcher to issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-r, --remove remove watcher from issue
|
|
||||||
|
|
||||||
labels add [<flags>] <ISSUE> <LABEL>...
|
|
||||||
Add labels to an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
|
|
||||||
labels set [<flags>] <ISSUE> <LABEL>...
|
|
||||||
Set labels on an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
|
|
||||||
labels remove [<flags>] <ISSUE> <LABEL>...
|
|
||||||
Remove labels from an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
|
|
||||||
take [<flags>] <ISSUE> [<ASSIGNEE>]
|
|
||||||
Assign issue to yourself
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--default use default user for assignee
|
|
||||||
|
|
||||||
assign [<flags>] <ISSUE> [<ASSIGNEE>]
|
|
||||||
Assign user to issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--default use default user for assignee
|
|
||||||
|
|
||||||
unassign [<flags>] <ISSUE> [<ASSIGNEE>]
|
|
||||||
Unassign an issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--default use default user for assignee
|
|
||||||
|
|
||||||
component add [<flags>]
|
|
||||||
Add component
|
|
||||||
|
|
||||||
--editor=EDITOR Editor to use
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--noedit Disable opening the editor
|
|
||||||
-p, --project=PROJECT project to create component in
|
|
||||||
-n, --name=NAME name of component
|
|
||||||
-d, --description=DESCRIPTION description of component
|
|
||||||
-l, --lead=LEAD person that acts as lead for component
|
|
||||||
|
|
||||||
components [<flags>]
|
|
||||||
Show components for a project
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-p, --project=PROJECT project to list components
|
|
||||||
|
|
||||||
issuetypes [<flags>]
|
|
||||||
Show issue types for a project
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-p, --project=PROJECT project to list issueTypes
|
|
||||||
|
|
||||||
attach create [<flags>] <ISSUE> [<ATTACHMENT>]
|
|
||||||
Attach file to issue
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
--saveFile=SAVEFILE Write attachment information as yaml to file
|
|
||||||
-f, --filename=FILENAME Filename to use for attachment
|
|
||||||
|
|
||||||
attach list [<flags>] <ISSUE>
|
|
||||||
Prints issue details
|
|
||||||
|
|
||||||
-b, --browse Open issue(s) in browser after operation
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
|
|
||||||
attach get [<flags>] [<ATTACHMENT-ID>]
|
|
||||||
Fetch attachment
|
|
||||||
|
|
||||||
-o, --output=OUTPUT Write attachment to specified file name, '-' for stdout
|
|
||||||
|
|
||||||
attach remove [<ATTACHMENT-ID>]
|
|
||||||
Delete attachment
|
|
||||||
|
|
||||||
|
|
||||||
export-templates [<flags>]
|
|
||||||
Export templates for customizations
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to export
|
|
||||||
-d, --dir=DIR directory to write tempates to
|
|
||||||
|
|
||||||
unexport-templates [<flags>]
|
|
||||||
Remove unmodified exported templates
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to export
|
|
||||||
-d, --dir=DIR directory to write tempates to
|
|
||||||
|
|
||||||
browse <ISSUE>
|
|
||||||
Open issue in browser
|
|
||||||
|
|
||||||
|
|
||||||
request [<flags>] <API> [<JSON>]
|
|
||||||
Open issue in requestr
|
|
||||||
|
|
||||||
-t, --template=TEMPLATE Template to use for output
|
|
||||||
--gjq=GJQ GJSON Query to filter output, see https://goo.gl/iaYwJ5
|
|
||||||
-M, --method=METHOD HTTP request method to use
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
+242
-155
@@ -52,6 +52,92 @@ func increaseLogLevel(verbosity int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var usage = `{{define "FormatCommand"}}\
|
||||||
|
{{if .FlagSummary}} {{.FlagSummary}}{{end}}\
|
||||||
|
{{range .Args}} {{if not .Required}}[{{end}}<{{.Name}}>{{if .Value|IsCumulative}}...{{end}}{{if not .Required}}]{{end}}{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{define "FormatBriefCommands"}}\
|
||||||
|
{{range .FlattenedCommands}}\
|
||||||
|
{{if not .Hidden}}\
|
||||||
|
{{ print .FullCommand ":" | printf "%-20s"}} {{.Help}}
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{define "FormatCommands"}}\
|
||||||
|
{{range .FlattenedCommands}}\
|
||||||
|
{{if not .Hidden}}\
|
||||||
|
{{.FullCommand}}{{if .Default}}*{{end}}{{template "FormatCommand" .}}
|
||||||
|
{{.Help|Wrap 4}}
|
||||||
|
{{with .Flags|FlagsToTwoColumns}}{{FormatTwoColumnsWithIndent . 4 2}}{{end}}
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{define "FormatUsage"}}\
|
||||||
|
{{template "FormatCommand" .}}{{if .Commands}} <command> [<args> ...]{{end}}
|
||||||
|
{{if .Help}}
|
||||||
|
{{.Help|Wrap 0}}\
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{if .Context.SelectedCommand}}\
|
||||||
|
usage: {{.App.Name}} {{.Context.SelectedCommand}}{{template "FormatCommand" .Context.SelectedCommand}}
|
||||||
|
{{if .Context.SelectedCommand.Aliases }}\
|
||||||
|
{{range $top := .App.Commands}}\
|
||||||
|
{{if eq $top.FullCommand $.Context.SelectedCommand.FullCommand}}\
|
||||||
|
{{range $alias := $.Context.SelectedCommand.Aliases}}\
|
||||||
|
alias: {{$.App.Name}} {{$alias}}{{template "FormatCommand" $.Context.SelectedCommand}}
|
||||||
|
{{end}}\
|
||||||
|
{{else}}\
|
||||||
|
{{range $sub := $top.Commands}}\
|
||||||
|
{{if eq $sub.FullCommand $.Context.SelectedCommand.FullCommand}}\
|
||||||
|
{{range $alias := $.Context.SelectedCommand.Aliases}}\
|
||||||
|
alias: {{$.App.Name}} {{$top.Name}} {{$alias}}{{template "FormatCommand" $.Context.SelectedCommand}}
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{end}}
|
||||||
|
{{if .Context.SelectedCommand.Help}}\
|
||||||
|
{{.Context.SelectedCommand.Help|Wrap 0}}
|
||||||
|
{{end}}\
|
||||||
|
{{else}}\
|
||||||
|
usage: {{.App.Name}}{{template "FormatUsage" .App}}
|
||||||
|
{{end}}\
|
||||||
|
|
||||||
|
{{if .App.Flags}}\
|
||||||
|
Global flags:
|
||||||
|
{{.App.Flags|FlagsToTwoColumns|FormatTwoColumns}}
|
||||||
|
{{end}}\
|
||||||
|
{{if .Context.SelectedCommand}}\
|
||||||
|
{{if and .Context.SelectedCommand.Flags|RequiredFlags}}\
|
||||||
|
Required flags:
|
||||||
|
{{.Context.SelectedCommand.Flags|RequiredFlags|FlagsToTwoColumns|FormatTwoColumns}}
|
||||||
|
{{end}}\
|
||||||
|
{{if .Context.SelectedCommand.Flags|OptionalFlags}}\
|
||||||
|
Optional flags:
|
||||||
|
{{.Context.SelectedCommand.Flags|OptionalFlags|FlagsToTwoColumns|FormatTwoColumns}}
|
||||||
|
{{end}}\
|
||||||
|
{{end}}\
|
||||||
|
{{if .Context.Args}}\
|
||||||
|
Args:
|
||||||
|
{{.Context.Args|ArgsToTwoColumns|FormatTwoColumns}}
|
||||||
|
{{end}}\
|
||||||
|
{{if .Context.SelectedCommand}}\
|
||||||
|
{{if .Context.SelectedCommand.Commands}}\
|
||||||
|
Subcommands:
|
||||||
|
{{template "FormatCommands" .Context.SelectedCommand}}
|
||||||
|
{{end}}\
|
||||||
|
{{else if .App.Commands}}\
|
||||||
|
Commands:
|
||||||
|
{{template "FormatBriefCommands" .App}}
|
||||||
|
{{end}}\
|
||||||
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
defer handleExit()
|
defer handleExit()
|
||||||
logBackend := logging.NewLogBackend(os.Stderr, "", 0)
|
logBackend := logging.NewLogBackend(os.Stderr, "", 0)
|
||||||
@@ -76,6 +162,7 @@ func main() {
|
|||||||
fmt.Println(jira.VERSION)
|
fmt.Println(jira.VERSION)
|
||||||
panic(jiracli.Exit{Code: 0})
|
panic(jiracli.Exit{Code: 0})
|
||||||
})
|
})
|
||||||
|
app.UsageTemplate(usage)
|
||||||
|
|
||||||
var verbosity int
|
var verbosity int
|
||||||
app.Flag("verbose", "Increase verbosity for debugging").Short('v').PreAction(func(_ *kingpin.ParseContext) error {
|
app.Flag("verbose", "Increase verbosity for debugging").Short('v').PreAction(func(_ *kingpin.ParseContext) error {
|
||||||
@@ -103,33 +190,89 @@ func main() {
|
|||||||
|
|
||||||
registry := []jiracli.CommandRegistry{
|
registry := []jiracli.CommandRegistry{
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "login",
|
Command: "acknowledge",
|
||||||
Entry: jiracmd.CmdLoginRegistry(),
|
Aliases: []string{"ack"},
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("acknowledge"),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "logout",
|
Command: "assign",
|
||||||
Entry: jiracmd.CmdLogoutRegistry(),
|
Entry: jiracmd.CmdAssignRegistry(),
|
||||||
|
Aliases: []string{"give"},
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "list",
|
Command: "attach create",
|
||||||
|
Entry: jiracmd.CmdAttachCreateRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "attach get",
|
||||||
|
Entry: jiracmd.CmdAttachGetRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "attach list",
|
||||||
|
Entry: jiracmd.CmdAttachListRegistry(),
|
||||||
Aliases: []string{"ls"},
|
Aliases: []string{"ls"},
|
||||||
Entry: jiracmd.CmdListRegistry(),
|
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "view",
|
Command: "attach remove",
|
||||||
Entry: jiracmd.CmdViewRegistry(),
|
Entry: jiracmd.CmdAttachRemoveRegistry(),
|
||||||
|
Aliases: []string{"rm"},
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "backlog",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("Backlog"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "block",
|
||||||
|
Entry: jiracmd.CmdBlockRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "browse",
|
||||||
|
Entry: jiracmd.CmdBrowseRegistry(),
|
||||||
|
Aliases: []string{"b"},
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "close",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("close"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "comment",
|
||||||
|
Entry: jiracmd.CmdCommentRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "component add",
|
||||||
|
Entry: jiracmd.CmdComponentAddRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "components",
|
||||||
|
Entry: jiracmd.CmdComponentsRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "create",
|
Command: "create",
|
||||||
Entry: jiracmd.CmdCreateRegistry(),
|
Entry: jiracmd.CmdCreateRegistry(),
|
||||||
},
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "createmeta",
|
||||||
|
Entry: jiracmd.CmdCreateMetaRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "done",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("Done"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "dup",
|
||||||
|
Entry: jiracmd.CmdDupRegistry(),
|
||||||
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "edit",
|
Command: "edit",
|
||||||
Entry: jiracmd.CmdEditRegistry(),
|
Entry: jiracmd.CmdEditRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "comment",
|
Command: "editmeta",
|
||||||
Entry: jiracmd.CmdCommentRegistry(),
|
Entry: jiracmd.CmdEditMetaRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "epic add",
|
||||||
|
Entry: jiracmd.CmdEpicAddRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "epic create",
|
Command: "epic create",
|
||||||
@@ -140,47 +283,23 @@ func main() {
|
|||||||
Entry: jiracmd.CmdEpicListRegistry(),
|
Entry: jiracmd.CmdEpicListRegistry(),
|
||||||
Aliases: []string{"ls"},
|
Aliases: []string{"ls"},
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "epic add",
|
|
||||||
Entry: jiracmd.CmdEpicAddRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "epic remove",
|
Command: "epic remove",
|
||||||
Entry: jiracmd.CmdEpicRemoveRegistry(),
|
Entry: jiracmd.CmdEpicRemoveRegistry(),
|
||||||
Aliases: []string{"rm"},
|
Aliases: []string{"rm"},
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "worklog list",
|
Command: "export-templates",
|
||||||
Entry: jiracmd.CmdWorklogListRegistry(),
|
Entry: jiracmd.CmdExportTemplatesRegistry(),
|
||||||
Default: true,
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "worklog add",
|
|
||||||
Entry: jiracmd.CmdWorklogAddRegistry(),
|
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "fields",
|
Command: "fields",
|
||||||
Entry: jiracmd.CmdFieldsRegistry(),
|
Entry: jiracmd.CmdFieldsRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "createmeta",
|
Command: "in-progress",
|
||||||
Entry: jiracmd.CmdCreateMetaRegistry(),
|
Aliases: []string{"prog", "progress"},
|
||||||
},
|
Entry: jiracmd.CmdTransitionRegistry("Progress"),
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "editmeta",
|
|
||||||
Entry: jiracmd.CmdEditMetaRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "subtask",
|
|
||||||
Entry: jiracmd.CmdSubtaskRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "dup",
|
|
||||||
Entry: jiracmd.CmdDupRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "block",
|
|
||||||
Entry: jiracmd.CmdBlockRegistry(),
|
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "issuelink",
|
Command: "issuelink",
|
||||||
@@ -190,6 +309,73 @@ func main() {
|
|||||||
Command: "issuelinktypes",
|
Command: "issuelinktypes",
|
||||||
Entry: jiracmd.CmdIssueLinkTypesRegistry(),
|
Entry: jiracmd.CmdIssueLinkTypesRegistry(),
|
||||||
},
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "issuetypes",
|
||||||
|
Entry: jiracmd.CmdIssueTypesRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "labels add",
|
||||||
|
Entry: jiracmd.CmdLabelsAddRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "labels remove",
|
||||||
|
Entry: jiracmd.CmdLabelsRemoveRegistry(),
|
||||||
|
Aliases: []string{"rm"},
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "labels set",
|
||||||
|
Entry: jiracmd.CmdLabelsSetRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "list",
|
||||||
|
Aliases: []string{"ls"},
|
||||||
|
Entry: jiracmd.CmdListRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "login",
|
||||||
|
Entry: jiracmd.CmdLoginRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "logout",
|
||||||
|
Entry: jiracmd.CmdLogoutRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "rank",
|
||||||
|
Entry: jiracmd.CmdRankRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "reopen",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("reopen"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "request",
|
||||||
|
Entry: jiracmd.CmdRequestRegistry(),
|
||||||
|
Aliases: []string{"req"},
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "resolve",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("resolve"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "start",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("start"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "stop",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("stop"),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "subtask",
|
||||||
|
Entry: jiracmd.CmdSubtaskRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "take",
|
||||||
|
Entry: jiracmd.CmdTakeRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "todo",
|
||||||
|
Entry: jiracmd.CmdTransitionRegistry("To Do"),
|
||||||
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "transition",
|
Command: "transition",
|
||||||
Aliases: []string{"trans"},
|
Aliases: []string{"trans"},
|
||||||
@@ -203,133 +389,34 @@ func main() {
|
|||||||
Command: "transmeta",
|
Command: "transmeta",
|
||||||
Entry: jiracmd.CmdTransitionsRegistry("debug"),
|
Entry: jiracmd.CmdTransitionsRegistry("debug"),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "close",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("close"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "acknowledge",
|
|
||||||
Aliases: []string{"ack"},
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("acknowledge"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "reopen",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("reopen"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "resolve",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("resolve"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "start",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("start"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "stop",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("stop"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "todo",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("To Do"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "backlog",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("Backlog"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "done",
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("Done"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "in-progress",
|
|
||||||
Aliases: []string{"prog", "progress"},
|
|
||||||
Entry: jiracmd.CmdTransitionRegistry("Progress"),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "vote",
|
|
||||||
Entry: jiracmd.CmdVoteRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "rank",
|
|
||||||
Entry: jiracmd.CmdRankRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "watch",
|
|
||||||
Entry: jiracmd.CmdWatchRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "labels add",
|
|
||||||
Entry: jiracmd.CmdLabelsAddRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "labels set",
|
|
||||||
Entry: jiracmd.CmdLabelsSetRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "labels remove",
|
|
||||||
Entry: jiracmd.CmdLabelsRemoveRegistry(),
|
|
||||||
Aliases: []string{"rm"},
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "take",
|
|
||||||
Entry: jiracmd.CmdTakeRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "assign",
|
|
||||||
Entry: jiracmd.CmdAssignRegistry(),
|
|
||||||
Aliases: []string{"give"},
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "unassign",
|
Command: "unassign",
|
||||||
Entry: jiracmd.CmdUnassignRegistry(),
|
Entry: jiracmd.CmdUnassignRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "component add",
|
|
||||||
Entry: jiracmd.CmdComponentAddRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "components",
|
|
||||||
Entry: jiracmd.CmdComponentsRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "issuetypes",
|
|
||||||
Entry: jiracmd.CmdIssueTypesRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "attach create",
|
|
||||||
Entry: jiracmd.CmdAttachCreateRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "attach list",
|
|
||||||
Entry: jiracmd.CmdAttachListRegistry(),
|
|
||||||
Aliases: []string{"ls"},
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "attach get",
|
|
||||||
Entry: jiracmd.CmdAttachGetRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "attach remove",
|
|
||||||
Entry: jiracmd.CmdAttachRemoveRegistry(),
|
|
||||||
Aliases: []string{"rm"},
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
|
||||||
Command: "export-templates",
|
|
||||||
Entry: jiracmd.CmdExportTemplatesRegistry(),
|
|
||||||
},
|
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "unexport-templates",
|
Command: "unexport-templates",
|
||||||
Entry: jiracmd.CmdUnexportTemplatesRegistry(),
|
Entry: jiracmd.CmdUnexportTemplatesRegistry(),
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "browse",
|
Command: "view",
|
||||||
Entry: jiracmd.CmdBrowseRegistry(),
|
Entry: jiracmd.CmdViewRegistry(),
|
||||||
Aliases: []string{"b"},
|
|
||||||
},
|
},
|
||||||
jiracli.CommandRegistry{
|
jiracli.CommandRegistry{
|
||||||
Command: "request",
|
Command: "vote",
|
||||||
Entry: jiracmd.CmdRequestRegistry(),
|
Entry: jiracmd.CmdVoteRegistry(),
|
||||||
Aliases: []string{"req"},
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "watch",
|
||||||
|
Entry: jiracmd.CmdWatchRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "worklog add",
|
||||||
|
Entry: jiracmd.CmdWorklogAddRegistry(),
|
||||||
|
},
|
||||||
|
jiracli.CommandRegistry{
|
||||||
|
Command: "worklog list",
|
||||||
|
Entry: jiracmd.CmdWorklogListRegistry(),
|
||||||
|
Default: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var log = logging.MustGetLogger("jira")
|
var log = logging.MustGetLogger("jira")
|
||||||
|
|
||||||
const VERSION = "1.0.8"
|
const VERSION = "1.0.10"
|
||||||
|
|
||||||
type Jira struct {
|
type Jira struct {
|
||||||
Endpoint string `json:"endpoint,omitempty" yaml:"endpoint,omitempty"`
|
Endpoint string `json:"endpoint,omitempty" yaml:"endpoint,omitempty"`
|
||||||
|
|||||||
@@ -160,13 +160,13 @@ func TemplateProcessor() *template.Template {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ConfigTemplate(fig *figtree.FigTree, template, command string, opts interface{}) (string, error) {
|
func ConfigTemplate(fig *figtree.FigTree, template, command string, opts interface{}) (string, error) {
|
||||||
var tmp interface{}
|
var tmp map[string]interface{}
|
||||||
err := ConvertType(opts, &tmp)
|
err := ConvertType(opts, &tmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
fig.LoadAllConfigs(command+".yml", tmp)
|
fig.LoadAllConfigs(command+".yml", &tmp)
|
||||||
fig.LoadAllConfigs("config.yml", tmp)
|
fig.LoadAllConfigs("config.yml", &tmp)
|
||||||
|
|
||||||
tmpl, err := TemplateProcessor().Parse(template)
|
tmpl, err := TemplateProcessor().Parse(template)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -261,14 +261,14 @@ const defaultDebugTemplate = "{{ . | toJson}}\n"
|
|||||||
const defaultListTemplate = "{{ range .issues }}{{ .key | append \":\" | printf \"%-12s\"}} {{ .fields.summary }}\n{{ end }}"
|
const defaultListTemplate = "{{ range .issues }}{{ .key | append \":\" | printf \"%-12s\"}} {{ .fields.summary }}\n{{ end }}"
|
||||||
|
|
||||||
const defaultTableTemplate = `{{/* table template */ -}}
|
const defaultTableTemplate = `{{/* table template */ -}}
|
||||||
{{$w := sub termWidth 92 -}}
|
{{$w := sub termWidth 107 -}}
|
||||||
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
||||||
| {{ "Issue" | printf "%-14s" }} | {{ "Summary" | printf (printf "%%-%ds" (sub $w 2)) }} | {{ "Priority" | printf "%-12s" }} | {{ "Status" | printf "%-12s" }} | {{ "Age" | printf "%-10s" }} | {{ "Reporter" | printf "%-12s" }} | {{ "Assignee" | printf "%-12s" }} |
|
| {{ "Issue" | printf "%-14s" }} | {{ "Summary" | printf (printf "%%-%ds" (sub $w 2)) }} | {{ "Type" | printf "%-12s"}} | {{ "Priority" | printf "%-12s" }} | {{ "Status" | printf "%-12s" }} | {{ "Age" | printf "%-10s" }} | {{ "Reporter" | printf "%-12s" }} | {{ "Assignee" | printf "%-12s" }} |
|
||||||
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
||||||
{{ range .issues -}}
|
{{ range .issues -}}
|
||||||
| {{ .key | printf "%-14s"}} | {{ .fields.summary | abbrev (sub $w 2) | printf (printf "%%-%ds" (sub $w 2)) }} | {{.fields.priority.name | printf "%-12s" }} | {{.fields.status.name | printf "%-12s" }} | {{.fields.created | age | printf "%-10s" }} | {{if .fields.reporter}}{{ .fields.reporter.name | printf "%-12s"}}{{else}}<unassigned>{{end}} | {{if .fields.assignee }}{{.fields.assignee.name | printf "%-12s" }}{{else}}<unassigned>{{end}} |
|
| {{ .key | printf "%-14s"}} | {{ .fields.summary | abbrev (sub $w 2) | printf (printf "%%-%ds" (sub $w 2)) }} | {{.fields.issuetype.name | printf "%-12s" }} | {{.fields.priority.name | printf "%-12s" }} | {{.fields.status.name | printf "%-12s" }} | {{.fields.created | age | printf "%-10s" }} | {{if .fields.reporter}}{{ .fields.reporter.name | printf "%-12s"}}{{else}}<unassigned>{{end}} | {{if .fields.assignee }}{{.fields.assignee.name | printf "%-12s" }}{{else}}<unassigned>{{end}} |
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
+{{ "-" | rep 16 }}+{{ "-" | rep $w }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
||||||
`
|
`
|
||||||
const defaultAttachListTemplate = `{{/* table template */ -}}
|
const defaultAttachListTemplate = `{{/* table template */ -}}
|
||||||
+{{ "-" | rep 12 }}+{{ "-" | rep 30 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
+{{ "-" | rep 12 }}+{{ "-" | rep 30 }}+{{ "-" | rep 12 }}+{{ "-" | rep 14 }}+{{ "-" | rep 14 }}+
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ func CmdAttachListRegistry() *jiracli.CommandRegistryEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return &jiracli.CommandRegistryEntry{
|
return &jiracli.CommandRegistryEntry{
|
||||||
"Prints issue details",
|
"Prints attachment details for issue",
|
||||||
func(fig *figtree.FigTree, cmd *kingpin.CmdClause) error {
|
func(fig *figtree.FigTree, cmd *kingpin.CmdClause) error {
|
||||||
jiracli.LoadConfigs(cmd, fig, &opts)
|
jiracli.LoadConfigs(cmd, fig, &opts)
|
||||||
return CmdAttachListUsage(cmd, &opts)
|
return CmdAttachListUsage(cmd, &opts)
|
||||||
|
|||||||
+4
-2
@@ -100,6 +100,7 @@ func CmdEdit(o *oreo.Client, globals *jiracli.GlobalOptions, opts *EditOptions)
|
|||||||
if opts.Browse.Value {
|
if opts.Browse.Value {
|
||||||
return CmdBrowse(globals, opts.Issue)
|
return CmdBrowse(globals, opts.Issue)
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
results, err := jira.Search(o, globals.Endpoint.Value, opts)
|
results, err := jira.Search(o, globals.Endpoint.Value, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -113,8 +114,9 @@ func CmdEdit(o *oreo.Client, globals *jiracli.GlobalOptions, opts *EditOptions)
|
|||||||
|
|
||||||
issueUpdate := jiradata.IssueUpdate{}
|
issueUpdate := jiradata.IssueUpdate{}
|
||||||
input := templateInput{
|
input := templateInput{
|
||||||
Issue: issueData,
|
Issue: issueData,
|
||||||
Meta: editMeta,
|
Meta: editMeta,
|
||||||
|
Overrides: opts.Overrides,
|
||||||
}
|
}
|
||||||
err = jiracli.EditLoop(&opts.CommonOptions, &input, &issueUpdate, func() error {
|
err = jiracli.EditLoop(&opts.CommonOptions, &input, &issueUpdate, func() error {
|
||||||
return jira.EditIssue(o, globals.Endpoint.Value, issueData.Key, &issueUpdate)
|
return jira.EditIssue(o, globals.Endpoint.Value, issueData.Key, &issueUpdate)
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ func CmdEpicListRegistry() *jiracli.CommandRegistryEntry {
|
|||||||
opts.MaxResults = 500
|
opts.MaxResults = 500
|
||||||
}
|
}
|
||||||
if opts.QueryFields == "" {
|
if opts.QueryFields == "" {
|
||||||
opts.QueryFields = "assignee,created,priority,reporter,status,summary,updated"
|
opts.QueryFields = "assignee,created,priority,reporter,status,summary,updated,issuetype"
|
||||||
}
|
}
|
||||||
if opts.Sort == "" {
|
if opts.Sort == "" {
|
||||||
opts.Sort = "priority asc, key"
|
opts.Sort = "priority asc, key"
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ func CmdListRegistry() *jiracli.CommandRegistryEntry {
|
|||||||
opts.MaxResults = 500
|
opts.MaxResults = 500
|
||||||
}
|
}
|
||||||
if opts.QueryFields == "" {
|
if opts.QueryFields == "" {
|
||||||
opts.QueryFields = "assignee,created,priority,reporter,status,summary,updated"
|
opts.QueryFields = "assignee,created,priority,reporter,status,summary,updated,issuetype"
|
||||||
}
|
}
|
||||||
if opts.Sort == "" {
|
if opts.Sort == "" {
|
||||||
opts.Sort = "priority asc, key"
|
opts.Sort = "priority asc, key"
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ user: gojira
|
|||||||
|
|
||||||
project: BASIC
|
project: BASIC
|
||||||
|
|
||||||
|
queries:
|
||||||
|
todo: >-
|
||||||
|
resolution = unresolved {{if .project}}AND project = '{{.project}}'{{end}} AND status = 'To Do'
|
||||||
|
|
||||||
custom-commands:
|
custom-commands:
|
||||||
- name: env
|
- name: env
|
||||||
help: print the JIRA environment variables available to custom commands
|
help: print the JIRA environment variables available to custom commands
|
||||||
|
|||||||
+53
-6
@@ -4,7 +4,7 @@ cd $(dirname $0)
|
|||||||
jira="../jira"
|
jira="../jira"
|
||||||
. env.sh
|
. env.sh
|
||||||
|
|
||||||
PLAN 86
|
PLAN 94
|
||||||
|
|
||||||
# reset login
|
# reset login
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
@@ -52,17 +52,64 @@ DIFF <<EOF
|
|||||||
$(printf %-12s $issue:) summary
|
$(printf %-12s $issue:) summary
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
## List issues using a named query
|
||||||
|
###############################################################################
|
||||||
|
RUNS $jira ls --project BASIC -n todo
|
||||||
|
DIFF <<EOF
|
||||||
|
$(printf %-12s $issue:) summary
|
||||||
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## List all issues, using the table template
|
## List all issues, using the table template
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira ls --project BASIC --template table
|
RUNS $jira ls --project BASIC --template table
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| $(printf %-14s $issue) | summary | Medium | To Do | a minute | gojira | gojira |
|
| $(printf %-14s $issue) | summary | Bug | Medium | To Do | a minute | gojira | gojira |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
## Edit an issue
|
||||||
|
###############################################################################
|
||||||
|
RUNS $jira edit $issue -m "edit comment" --override priority=High --noedit
|
||||||
|
DIFF <<EOF
|
||||||
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
## Edit multiple issues with query
|
||||||
|
###############################################################################
|
||||||
|
RUNS $jira edit -m "bulk edit comment" --override priority=High --noedit --query "resolution = unresolved AND project = 'BASIC' AND status = 'To Do'"
|
||||||
|
DIFF <<EOF
|
||||||
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUNS $jira $issue
|
||||||
|
DIFF <<EOF
|
||||||
|
issue: $issue
|
||||||
|
created: a minute ago
|
||||||
|
status: To Do
|
||||||
|
summary: summary
|
||||||
|
project: BASIC
|
||||||
|
issuetype: Bug
|
||||||
|
assignee: gojira
|
||||||
|
reporter: gojira
|
||||||
|
priority: High
|
||||||
|
votes: 0
|
||||||
|
description: |
|
||||||
|
description
|
||||||
|
|
||||||
|
comments:
|
||||||
|
- | # gojira, a minute ago
|
||||||
|
edit comment
|
||||||
|
- | # gojira, a minute ago
|
||||||
|
bulk edit comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira mine
|
RUNS $jira mine
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| $(printf %-14s $issue) | summary | Medium | To Do | a minute | gojira | gojira |
|
| $(printf %-14s $issue) | summary | Bug | Medium | To Do | a minute | gojira | gojira |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
+19
-19
@@ -46,10 +46,10 @@ EOF
|
|||||||
RUNS $jira epic list $epic
|
RUNS $jira epic list $epic
|
||||||
|
|
||||||
DIFF<<EOF
|
DIFF<<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -69,12 +69,12 @@ EOF
|
|||||||
RUNS $jira epic list $epic
|
RUNS $jira epic list $epic
|
||||||
|
|
||||||
DIFF<<EOF
|
DIFF<<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| $(printf %-14s $issue1) | summary | Medium | To Do | a minute | gojira | gojira |
|
| $(printf %-14s $issue1) | summary | Bug | Medium | To Do | a minute | gojira | gojira |
|
||||||
| $(printf %-14s $issue2) | summary | Medium | To Do | a minute | gojira | gojira |
|
| $(printf %-14s $issue2) | summary | Bug | Medium | To Do | a minute | gojira | gojira |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -92,11 +92,11 @@ EOF
|
|||||||
RUNS $jira epic list $epic
|
RUNS $jira epic list $epic
|
||||||
|
|
||||||
DIFF<<EOF
|
DIFF<<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| $(printf %-14s $issue2) | summary | Medium | To Do | a minute | gojira | gojira |
|
| $(printf %-14s $issue2) | summary | Bug | Medium | To Do | a minute | gojira | gojira |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -114,8 +114,8 @@ EOF
|
|||||||
RUNS $jira epic list $epic
|
RUNS $jira epic list $epic
|
||||||
|
|
||||||
DIFF<<EOF
|
DIFF<<EOF
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
| Issue | Summary | Priority | Status | Age | Reporter | Assignee |
|
| Issue | Summary | Type | Priority | Status | Age | Reporter | Assignee |
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
+----------------+---------------------------------------------------------+--------------+--------------+------------+--------------+--------------+
|
+----------------+------------------------------------------+--------------+--------------+--------------+------------+--------------+--------------+
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
Reference in New Issue
Block a user