jira-cli 0.0.5 → 0.0.6
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/lib/jira.rb +5 -2
- data/lib/jira/api.rb +13 -4
- data/lib/jira/comment.rb +46 -0
- data/lib/jira/constants.rb +1 -1
- data/lib/jira/{lookup.rb → describe.rb} +2 -12
- data/lib/jira/format.rb +39 -0
- data/lib/jira/transition.rb +10 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 317a2980fd40942f189582860e629ec9b7ae6c74
|
4
|
+
data.tar.gz: d39be85a427cdb978a596b590fdf8101c09a3201
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74509f9851e7c59807417a42f54f763bbcab7232d1920ef115bf69ab6d3eebe376831eaef90125d5c50aaf7660ea38f594479e0f8f458c8e23031563b0f4553d
|
7
|
+
data.tar.gz: 5fcee4eb59837605287cf6c7e30671110941f4f82baf7351643988676bac2f7ab23ec4a71ffc54e0b8b8918aedf249e210348c913c70b2d44f5ee301e276eebe
|
data/lib/jira.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
|
+
# dependencies
|
1
2
|
require 'thor'
|
2
|
-
|
3
|
+
# core logic
|
3
4
|
require 'jira/constants'
|
4
5
|
require 'jira/core'
|
5
6
|
require 'jira/api'
|
6
7
|
require 'jira/format'
|
7
8
|
require 'jira/mixins'
|
9
|
+
# command logic
|
8
10
|
require 'jira/version'
|
9
11
|
require 'jira/install'
|
10
|
-
require 'jira/
|
12
|
+
require 'jira/describe'
|
13
|
+
require 'jira/comment'
|
11
14
|
|
12
15
|
module Jira
|
13
16
|
class CLI < Thor
|
data/lib/jira/api.rb
CHANGED
@@ -16,8 +16,8 @@ module Jira
|
|
16
16
|
#
|
17
17
|
# @return [JSON] parsed API response
|
18
18
|
#
|
19
|
-
def get(path)
|
20
|
-
response = @client.get(self.endpoint(path))
|
19
|
+
def get(path, params={})
|
20
|
+
response = @client.get(self.endpoint(path), params, self.headers)
|
21
21
|
JSON.parse(response.body)
|
22
22
|
end
|
23
23
|
|
@@ -29,8 +29,8 @@ module Jira
|
|
29
29
|
#
|
30
30
|
# @return [JSON] parsed API response
|
31
31
|
#
|
32
|
-
def post(path, params)
|
33
|
-
response = @client.post(self.endpoint(path), params)
|
32
|
+
def post(path, params={})
|
33
|
+
response = @client.post(self.endpoint(path), params, self.headers)
|
34
34
|
JSON.parse(response.body)
|
35
35
|
end
|
36
36
|
|
@@ -47,5 +47,14 @@ module Jira
|
|
47
47
|
"#{Jira::Core.url}/rest/api/2/#{path}"
|
48
48
|
end
|
49
49
|
|
50
|
+
#
|
51
|
+
# Returns the default API headers
|
52
|
+
#
|
53
|
+
# @return [Hash] API headers
|
54
|
+
#
|
55
|
+
def headers
|
56
|
+
{ 'Content-Type' => 'application/json' }
|
57
|
+
end
|
58
|
+
|
50
59
|
end
|
51
60
|
end
|
data/lib/jira/comment.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Jira
|
2
|
+
class CLI < Thor
|
3
|
+
|
4
|
+
desc "comment", "Add a comment to the input ticket"
|
5
|
+
def comment(ticket=nil)
|
6
|
+
ticket ||= `git rev-parse --abbrev-ref HEAD`.strip
|
7
|
+
comment = self.cli.ask("Leave a comment for ticket #{ticket}:")
|
8
|
+
if comment.strip.empty?
|
9
|
+
puts "No comment posted."
|
10
|
+
else
|
11
|
+
json = @api.post("issue/#{ticket}/comment", { body: comment }.to_json)
|
12
|
+
if json['errorMessages'].nil?
|
13
|
+
puts "Successfully posted your comment."
|
14
|
+
else
|
15
|
+
puts json['errorMessages'].first
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "comments", "Lists the comments of the input ticket"
|
21
|
+
def comments(ticket=nil)
|
22
|
+
ticket ||= `git rev-parse --abbrev-ref HEAD`.strip
|
23
|
+
json = @api.get("issue/#{ticket}")
|
24
|
+
if json['errorMessages'].nil?
|
25
|
+
|
26
|
+
comments = json['fields']['comment']['comments']
|
27
|
+
if comments.count > 0
|
28
|
+
comments.each do |comment|
|
29
|
+
author = comment['author']['displayName']
|
30
|
+
time = Time.parse(comment['created'])
|
31
|
+
body = comment['body']
|
32
|
+
|
33
|
+
puts "#{Jira::Format.author(author)} @ "\
|
34
|
+
"#{Jira::Format.time(time)}:\n"\
|
35
|
+
"#{Jira::Format.comment(body)}"
|
36
|
+
end
|
37
|
+
else
|
38
|
+
puts "There are no comments on issue #{ticket}."
|
39
|
+
end
|
40
|
+
else
|
41
|
+
puts json['errorMessages'].first
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/lib/jira/constants.rb
CHANGED
@@ -3,8 +3,8 @@ module Jira
|
|
3
3
|
|
4
4
|
desc "describe", "Describes the input ticket"
|
5
5
|
def describe(ticket=nil)
|
6
|
-
ticket
|
7
|
-
description(ticket.strip)
|
6
|
+
ticket ||= `git rev-parse --abbrev-ref HEAD`
|
7
|
+
puts description(ticket.strip)
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "all", "Describes all local branches that match JIRA ticketing syntax"
|
@@ -44,16 +44,6 @@ module Jira
|
|
44
44
|
puts output
|
45
45
|
end
|
46
46
|
|
47
|
-
desc "comment", "Add a comment to the input ticket"
|
48
|
-
def comment(ticket=nil)
|
49
|
-
say "Coming soon"
|
50
|
-
end
|
51
|
-
|
52
|
-
desc "transition", "Transitions the input ticket to the next state"
|
53
|
-
def transition(ticket=nil)
|
54
|
-
say "Coming soon"
|
55
|
-
end
|
56
|
-
|
57
47
|
protected
|
58
48
|
|
59
49
|
#
|
data/lib/jira/format.rb
CHANGED
@@ -30,6 +30,45 @@ module Jira
|
|
30
30
|
"#{Thor::Shell::Color::CLEAR}"
|
31
31
|
end
|
32
32
|
|
33
|
+
def author(author)
|
34
|
+
"#{Thor::Shell::Color::MAGENTA}"\
|
35
|
+
"#{author}"\
|
36
|
+
"#{Thor::Shell::Color::CLEAR}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def time(time)
|
40
|
+
"#{Thor::Shell::Color::BLUE}"\
|
41
|
+
"#{time.strftime("%l:%M%P on %b %d, %Y").strip}"\
|
42
|
+
"#{Thor::Shell::Color::CLEAR}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def comment(comment)
|
46
|
+
comment = self.wrap(comment)
|
47
|
+
comment.gsub!(/\[~[a-z]+\]/, '[[[\0]]]')
|
48
|
+
comment.gsub!(
|
49
|
+
'[[[[~',
|
50
|
+
"#{Thor::Shell::Color::BOLD}"\
|
51
|
+
"#{Thor::Shell::Color::WHITE}"\
|
52
|
+
"("\
|
53
|
+
"#{Thor::Shell::Color::MAGENTA}"\
|
54
|
+
"@"
|
55
|
+
)
|
56
|
+
comment.gsub!(
|
57
|
+
']]]]',
|
58
|
+
"#{Thor::Shell::Color::WHITE}"\
|
59
|
+
")"\
|
60
|
+
"#{Thor::Shell::Color::CLEAR}"
|
61
|
+
)
|
62
|
+
return comment
|
63
|
+
end
|
64
|
+
|
65
|
+
def wrap(text)
|
66
|
+
width = 80
|
67
|
+
text.split("\n").collect do |line|
|
68
|
+
line.length > width ? line.gsub(/(.{1,#{width}})(\s+|$)/, "\\1\n").strip : line
|
69
|
+
end * "\n"
|
70
|
+
end
|
71
|
+
|
33
72
|
end
|
34
73
|
end
|
35
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darren Lin Cheng
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -61,12 +61,14 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- bin/jira
|
63
63
|
- lib/jira/api.rb
|
64
|
+
- lib/jira/comment.rb
|
64
65
|
- lib/jira/constants.rb
|
65
66
|
- lib/jira/core.rb
|
67
|
+
- lib/jira/describe.rb
|
66
68
|
- lib/jira/format.rb
|
67
69
|
- lib/jira/install.rb
|
68
|
-
- lib/jira/lookup.rb
|
69
70
|
- lib/jira/mixins.rb
|
71
|
+
- lib/jira/transition.rb
|
70
72
|
- lib/jira/version.rb
|
71
73
|
- lib/jira.rb
|
72
74
|
- README.md
|