jira_command 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -2
- data/README.md +46 -0
- data/lib/jira_command/cli.rb +2 -0
- data/lib/jira_command/command/assign.rb +2 -2
- data/lib/jira_command/command/config.rb +1 -1
- data/lib/jira_command/command/issue.rb +64 -0
- data/lib/jira_command/command/status.rb +1 -1
- data/lib/jira_command/command/transition.rb +3 -1
- data/lib/jira_command/jira/issue.rb +40 -0
- data/lib/jira_command/jira/issuetype.rb +19 -0
- data/lib/jira_command/jira/project.rb +19 -0
- data/lib/jira_command/jira/status.rb +2 -2
- data/lib/jira_command/jira/transition.rb +1 -1
- data/lib/jira_command/jira/user.rb +1 -1
- data/lib/jira_command/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de9b915ed2af20b1590e31703459e748ef701601eeb3dd5ecb0be0ba1eb87675
|
4
|
+
data.tar.gz: 58664c3370e6ad144f03decdff7d43ad9c89a3dad494e51b2579a7cf24017d2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a802d9ee4afaf814ed424f1fe0a23823f7f998cedd96909f8f9ec2f826bd0360be61bde297330f1686e0cf03300a1b4f18f4f71cccdcbafa273e93d95a6910db
|
7
|
+
data.tar.gz: c7af75ea99e6a674e0fbc9d9ce24220a35e771ac91f17ade1b20e5042c37f48f1ae75a7185b703822bc417d5d2891154814bfd2dc406e5fc6ea19c7e6d92c224
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
Style/FrozenStringLiteralComment:
|
3
2
|
Enabled: false
|
4
3
|
|
@@ -45,7 +44,7 @@ Metrics/BlockLength:
|
|
45
44
|
Max: 60
|
46
45
|
|
47
46
|
Style/HashEachMethods:
|
48
|
-
Enabled: true
|
47
|
+
Enabled: true
|
49
48
|
|
50
49
|
Metrics/AbcSize:
|
51
50
|
Max: 50
|
@@ -56,6 +55,9 @@ Style/AsciiComments:
|
|
56
55
|
Style/ClassAndModuleChildren:
|
57
56
|
Enabled: false
|
58
57
|
|
58
|
+
Metrics/ParameterLists:
|
59
|
+
Enabled: false
|
60
|
+
|
59
61
|
Style/HashTransformKeys:
|
60
62
|
Enabled: false
|
61
63
|
|
data/README.md
CHANGED
@@ -22,6 +22,8 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
+
You need to get token in [JIRA](https://id.atlassian.com/manage-profile/security).
|
26
|
+
|
25
27
|
```bash
|
26
28
|
$ jira_command config create
|
27
29
|
> Please input your site url: https://<your-domain>.atlassian.net/
|
@@ -39,6 +41,50 @@ Commands:
|
|
39
41
|
jira_command user # list all users
|
40
42
|
```
|
41
43
|
|
44
|
+
<b>the most useful commands</b>
|
45
|
+
|
46
|
+
```
|
47
|
+
$ jira_command list help my
|
48
|
+
Usage:
|
49
|
+
jira_command list my
|
50
|
+
|
51
|
+
Options:
|
52
|
+
c, [--current=CURRENT]
|
53
|
+
u, [--unresolved=UNRESOLVED]
|
54
|
+
|
55
|
+
list your issues
|
56
|
+
|
57
|
+
|
58
|
+
$ jira_command list help my
|
59
|
+
Usage:
|
60
|
+
jira_command list my
|
61
|
+
|
62
|
+
Options:
|
63
|
+
c, [--current=CURRENT]
|
64
|
+
u, [--unresolved=UNRESOLVED]
|
65
|
+
|
66
|
+
list your issues
|
67
|
+
|
68
|
+
$ jira_command transition help issue
|
69
|
+
Usage:
|
70
|
+
jira_command transition issue
|
71
|
+
|
72
|
+
Options:
|
73
|
+
c, [--current=CURRENT]
|
74
|
+
m, [--mine=MINE]
|
75
|
+
|
76
|
+
transite issue status
|
77
|
+
|
78
|
+
$ jira_command assign help exec
|
79
|
+
Usage:
|
80
|
+
jira_command assign exec
|
81
|
+
|
82
|
+
Options:
|
83
|
+
i, [--issue=ISSUE]
|
84
|
+
|
85
|
+
assign to user
|
86
|
+
```
|
87
|
+
|
42
88
|
## Development
|
43
89
|
|
44
90
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/jira_command/cli.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative 'command/user'
|
|
6
6
|
require_relative 'command/assign'
|
7
7
|
require_relative 'command/status'
|
8
8
|
require_relative 'command/transition'
|
9
|
+
require_relative 'command/issue'
|
9
10
|
|
10
11
|
module JiraCommand
|
11
12
|
class CLI < Thor
|
@@ -15,5 +16,6 @@ module JiraCommand
|
|
15
16
|
register(JiraCommand::Command::Assign, 'assign', 'assign', 'set or unset assign in issue')
|
16
17
|
register(JiraCommand::Command::Status, 'status', 'status', 'show all status in project')
|
17
18
|
register(JiraCommand::Command::Transition, 'transition', 'transition', 'transition issues')
|
19
|
+
register(JiraCommand::Command::Issue, 'issue', 'issue', 'create a issue')
|
18
20
|
end
|
19
21
|
end
|
@@ -7,9 +7,9 @@ require_relative '../jira/assign'
|
|
7
7
|
module JiraCommand
|
8
8
|
module Command
|
9
9
|
class Assign < Thor
|
10
|
-
desc '
|
10
|
+
desc 'exec', 'assign to user'
|
11
11
|
option 'issue', aliases: 'i', required: false
|
12
|
-
def
|
12
|
+
def exec
|
13
13
|
config = JiraCommand::Config.new.read
|
14
14
|
|
15
15
|
user_api = JiraCommand::Jira::User.new(config)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'jira_command'
|
2
|
+
require_relative '../config'
|
3
|
+
require_relative '../jira/issuetype'
|
4
|
+
require_relative '../jira/project'
|
5
|
+
require_relative '../jira/issue'
|
6
|
+
|
7
|
+
module JiraCommand
|
8
|
+
module Command
|
9
|
+
class Issue < Thor
|
10
|
+
desc 'create', 'create new issue'
|
11
|
+
def create
|
12
|
+
config = JiraCommand::Config.new.read
|
13
|
+
jira_issue_type = JiraCommand::Jira::IssueType.new(config)
|
14
|
+
issue_types = jira_issue_type.list
|
15
|
+
|
16
|
+
prompt = TTY::Prompt.new
|
17
|
+
|
18
|
+
issue_type = prompt.select('Which issue type do you want to create?') do |menu|
|
19
|
+
issue_types.each do |item|
|
20
|
+
menu.choice name: item[:name], value: item[:id]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
jira_project = JiraCommand::Jira::Project.new(config)
|
25
|
+
projects = jira_project.list
|
26
|
+
|
27
|
+
project = prompt.select('Which project does the issue belong to?') do |menu|
|
28
|
+
projects.each do |item|
|
29
|
+
menu.choice name: item[:name], value: { id: item[:id], key: item[:key] }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
user_api = JiraCommand::Jira::User.new(config)
|
34
|
+
user_list = user_api.all_list(project: project[:key])
|
35
|
+
|
36
|
+
assignee = prompt.select('Who do you want to assign?') do |menu|
|
37
|
+
user_list.each do |user|
|
38
|
+
menu.choice name: user[:name], value: user[:account_id]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
reporter = prompt.select('Who are you?') do |menu|
|
43
|
+
user_list.each do |user|
|
44
|
+
menu.choice name: user[:name], value: user[:account_id]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
summary = prompt.ask('Please input issue summary: ')
|
49
|
+
description = prompt.ask('Please input issue description: ')
|
50
|
+
|
51
|
+
jira_issue = JiraCommand::Jira::Issue.new(config)
|
52
|
+
|
53
|
+
puts 'the created issue url: ' + jira_issue.create(
|
54
|
+
summary: summary,
|
55
|
+
description: description,
|
56
|
+
assignee: assignee,
|
57
|
+
reporter: reporter,
|
58
|
+
project_id: project[:id],
|
59
|
+
issuetype_id: issue_type
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -46,7 +46,9 @@ module JiraCommand
|
|
46
46
|
|
47
47
|
issue_key = prompt.select('Which issue do you want to transite?') do |menu|
|
48
48
|
issues_list['issues'].map do |i|
|
49
|
-
|
49
|
+
assignee = i['fields']['assignee']
|
50
|
+
menu.choice(name: "#{assignee.nil? ? 'not assigned' : assignee['displayName']}: #{i['fields']['summary']}(#{i['fields']['status']['name']})",
|
51
|
+
value: i['key'])
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'jira_command'
|
2
|
+
require 'faraday'
|
3
|
+
require 'json'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
module JiraCommand
|
7
|
+
module Jira
|
8
|
+
class Issue < JiraCommand::Jira::Base
|
9
|
+
BASE_PATH = 'rest/api/2/issue'.freeze
|
10
|
+
|
11
|
+
def create(summary:, description:, assignee:, reporter:, project_id:, issuetype_id:)
|
12
|
+
request_body = { fields: {
|
13
|
+
project: {
|
14
|
+
id: project_id
|
15
|
+
},
|
16
|
+
summary: summary,
|
17
|
+
issuetype: {
|
18
|
+
id: issuetype_id
|
19
|
+
},
|
20
|
+
assignee: {
|
21
|
+
id: assignee
|
22
|
+
},
|
23
|
+
reporter: {
|
24
|
+
id: reporter
|
25
|
+
},
|
26
|
+
description: description
|
27
|
+
} }.to_json
|
28
|
+
|
29
|
+
res = @conn.post do |req|
|
30
|
+
req.url BASE_PATH
|
31
|
+
req.body = request_body
|
32
|
+
end
|
33
|
+
|
34
|
+
body = JSON.parse(res.body)
|
35
|
+
|
36
|
+
@config['jira_url'] + 'browse/' + body['key']
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'jira_command'
|
2
|
+
require 'faraday'
|
3
|
+
require 'json'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
module JiraCommand
|
7
|
+
module Jira
|
8
|
+
class IssueType < JiraCommand::Jira::Base
|
9
|
+
BASE_PATH = 'rest/api/2/issuetype'.freeze
|
10
|
+
|
11
|
+
def list
|
12
|
+
res = @conn.get(BASE_PATH)
|
13
|
+
body = JSON.parse(res.body)
|
14
|
+
|
15
|
+
body.map { |item| { name: item['untranslatedName'], id: item['id'] } }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'jira_command'
|
2
|
+
require 'faraday'
|
3
|
+
require 'json'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
module JiraCommand
|
7
|
+
module Jira
|
8
|
+
class Project < JiraCommand::Jira::Base
|
9
|
+
BASE_PATH = 'rest/api/2/project'.freeze
|
10
|
+
|
11
|
+
def list
|
12
|
+
res = @conn.get(BASE_PATH)
|
13
|
+
body = JSON.parse(res.body)
|
14
|
+
|
15
|
+
body.map { |item| { name: item['name'], id: item['id'], key: item['key'] } }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -9,7 +9,7 @@ module JiraCommand
|
|
9
9
|
class Status < JiraCommand::Jira::Base
|
10
10
|
BASE_PATH = 'rest/api/2/status'.freeze
|
11
11
|
|
12
|
-
def list
|
12
|
+
def list
|
13
13
|
res = @conn.get(BASE_PATH)
|
14
14
|
|
15
15
|
res = JSON.parse(res.body)
|
@@ -20,7 +20,7 @@ module JiraCommand
|
|
20
20
|
def transite(issue_key:, target_status_id:)
|
21
21
|
request_url = "rest/api/2/issue/#{issue_key}/transitions"
|
22
22
|
|
23
|
-
|
23
|
+
@conn.post do |req|
|
24
24
|
req.url request_url
|
25
25
|
req.body = { transition: { id: target_status_id } }.to_json
|
26
26
|
end
|
@@ -19,7 +19,7 @@ module JiraCommand
|
|
19
19
|
def transite(issue_key:, target_transition_id:)
|
20
20
|
request_url = "rest/api/2/issue/#{issue_key}/transitions"
|
21
21
|
|
22
|
-
|
22
|
+
@conn.post do |req|
|
23
23
|
req.url request_url
|
24
24
|
req.body = { transition: { id: target_transition_id } }.to_json
|
25
25
|
end
|
data/lib/jira_command/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira_command
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shengbo.xu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- lib/jira_command/cli.rb
|
51
51
|
- lib/jira_command/command/assign.rb
|
52
52
|
- lib/jira_command/command/config.rb
|
53
|
+
- lib/jira_command/command/issue.rb
|
53
54
|
- lib/jira_command/command/list.rb
|
54
55
|
- lib/jira_command/command/status.rb
|
55
56
|
- lib/jira_command/command/transition.rb
|
@@ -57,7 +58,10 @@ files:
|
|
57
58
|
- lib/jira_command/config.rb
|
58
59
|
- lib/jira_command/jira/assign.rb
|
59
60
|
- lib/jira_command/jira/base.rb
|
61
|
+
- lib/jira_command/jira/issue.rb
|
62
|
+
- lib/jira_command/jira/issuetype.rb
|
60
63
|
- lib/jira_command/jira/list.rb
|
64
|
+
- lib/jira_command/jira/project.rb
|
61
65
|
- lib/jira_command/jira/status.rb
|
62
66
|
- lib/jira_command/jira/transition.rb
|
63
67
|
- lib/jira_command/jira/user.rb
|