Skip to content

Commit 85fe429

Browse files
authored
Merge pull request #43 from LisaHelm/master
Add ability to dynamically acquire issue-keys using JQL
2 parents aba4eb7 + 8ee6290 commit 85fe429

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,13 @@ Multiple issue-keys can be passed in via space separated format e.g.
126126
$ python jira-dependency-graph.py --cookie <JSESSIONID> issue-key1 issue-key2
127127
```
128128

129+
### JQL Query
130+
131+
Instead of passing issue-keys, a Jira Query Language command can be passed with `--jql` e.g.
132+
```bash
133+
$ python jira-dependency-graph.py --cookie <JSESSIONID> --jql 'project = JRADEV'
134+
```
135+
129136

130137
Usage without Google Graphviz API:
131138
============

jira-dependency-graph.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ def query(self, query):
5555
content = response.json()
5656
return content['issues']
5757

58+
def list_ids(self, query):
59+
log('Querying ' + query)
60+
response = self.get('/search', params={'jql': query, 'fields': 'key', 'maxResults': 100})
61+
return [issue["key"] for issue in response.json()["issues"]]
62+
5863
def get_issue_uri(self, issue_key):
5964
return self.__base_url + '/browse/' + issue_key
6065

@@ -241,12 +246,13 @@ def parse_args():
241246
parser.add_argument('-xi', '--issue-exclude', dest='issue_excludes', action='append', default=[], help='Exclude issue keys; can be repeated for multiple issues')
242247
parser.add_argument('-s', '--show-directions', dest='show_directions', default=['inward', 'outward'], help='which directions to show (inward, outward)')
243248
parser.add_argument('-d', '--directions', dest='directions', default=['inward', 'outward'], help='which directions to walk (inward, outward)')
249+
parser.add_argument('--jql', dest='jql_query', default=None, help='JQL search for issues (e.g. \'project = JRADEV\')')
244250
parser.add_argument('-ns', '--node-shape', dest='node_shape', default='box', help='which shape to use for nodes (circle, box, ellipse, etc)')
245251
parser.add_argument('-t', '--ignore-subtasks', action='store_true', default=False, help='Don''t include sub-tasks issues')
246252
parser.add_argument('-T', '--dont-traverse', dest='traverse', action='store_false', default=True, help='Do not traverse to other projects')
247253
parser.add_argument('-w', '--word-wrap', dest='word_wrap', default=False, action='store_true', help='Word wrap issue summaries instead of truncating them')
248254
parser.add_argument('--no-verify-ssl', dest='no_verify_ssl', default=False, action='store_true', help='Don\'t verify SSL certs for requests')
249-
parser.add_argument('issues', nargs='+', help='The issue key (e.g. JRADEV-1107, JRADEV-1391)')
255+
parser.add_argument('issues', nargs='*', help='The issue key (e.g. JRADEV-1107, JRADEV-1391)')
250256
return parser.parse_args()
251257

252258

@@ -277,6 +283,9 @@ def main():
277283

278284
jira = JiraSearch(options.jira_url, auth, options.no_verify_ssl)
279285

286+
if options.jql_query is not None:
287+
options.issues.extend(jira.list_ids(options.jql_query))
288+
280289
graph = []
281290
for issue in options.issues:
282291
graph = graph + build_graph_data(issue, jira, options.excludes, options.show_directions, options.directions,

0 commit comments

Comments
 (0)