gitjira 0.2.0 → 0.3.0
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/Gemfile.lock +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +16 -8
- data/bin/git-jira +33 -15
- data/bin/gj +88 -0
- data/lib/gitjira/information_fetching.rb +20 -3
- data/lib/gitjira/setup.rb +4 -5
- data/lib/gitjira/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 81c1bc701b41a93ef30dcee92ac3bdb2444e0126
|
|
4
|
+
data.tar.gz: 9cf5d0e5f6dadbe1e7670a290c60156f289e8f87
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b0521a9764b17f453add243ca20c59ee78db0c0586e5332e6350e1702e4ad0b5b3dea52c99496fc63485f14fcb5881b91067b08fa337e648fa53bc43fb0b21f6
|
|
7
|
+
data.tar.gz: 2f6d00ac16bda851b1d7093122405e33cad4531ed6686d4ace566848132902c2f4ad3113573c9387b120a63e6dbf8c66477d27b35d2f93346297d5390e628d59
|
data/Gemfile.lock
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Install via rubygems.org:
|
|
|
24
24
|
|
|
25
25
|
## Setup:
|
|
26
26
|
|
|
27
|
-
$ git-jira init
|
|
27
|
+
$ git-jira init # or gj init
|
|
28
28
|
JIRA host (e.g. https://jira.example.org): http://www.example.org/jira
|
|
29
29
|
Your JIRA username : johnny
|
|
30
30
|
Your JIRA password : ************
|
|
@@ -33,19 +33,27 @@ Install via rubygems.org:
|
|
|
33
33
|
If you want update the configuration file, e.g. changing the host, you can
|
|
34
34
|
update directly the .git/config file or via the following command:
|
|
35
35
|
|
|
36
|
-
$ git-jira init -f # or --force
|
|
36
|
+
$ git-jira init -f # or --force or gj init
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
Check if the configuration was stored correctly.
|
|
40
40
|
|
|
41
|
-
$ git-jira
|
|
41
|
+
$ git-jira config # or gj config
|
|
42
|
+
JIRA Host...........: https://www.example.org/jira
|
|
43
|
+
JIRA Project Key....: PROJ
|
|
44
|
+
JIRA Username.......: johnny
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Example #1 - List branch information that have related JIRA issues:
|
|
48
|
+
|
|
49
|
+
$ git-jira list # or gj list or git-jira or gj
|
|
42
50
|
Open 0% done PROJ-123 - Implement some new feature
|
|
43
51
|
Resolved 100% done PROJ-20 - And yet another feature
|
|
44
52
|
Resolved 42% done PROJ-16 - Add /features page
|
|
45
53
|
|
|
46
|
-
## Exampel
|
|
54
|
+
## Exampel #2 - Get information about the current branch
|
|
47
55
|
|
|
48
|
-
$ git-jira describe
|
|
56
|
+
$ git-jira describe # or gj describe
|
|
49
57
|
=> Add /features page <=
|
|
50
58
|
|
|
51
59
|
Issue Key...........: PROJ-123
|
|
@@ -64,11 +72,11 @@ update directly the .git/config file or via the following command:
|
|
|
64
72
|
|
|
65
73
|
Add a page that lists all features.
|
|
66
74
|
|
|
67
|
-
## Exampel
|
|
75
|
+
## Exampel #3 - Get information about a specific issue
|
|
68
76
|
|
|
69
77
|
Get information about a specific issue that must not be available as branch.
|
|
70
78
|
|
|
71
|
-
$ git-jira describe -i 123 # or git-jira describe -i PROJ-123
|
|
79
|
+
$ git-jira describe -i 123 # or git-jira describe -i PROJ-123 or gj describe -i PROJ-123
|
|
72
80
|
=> Add /features page <=
|
|
73
81
|
|
|
74
82
|
Issue Key...........: PROJ-123
|
data/bin/git-jira
CHANGED
|
@@ -14,25 +14,28 @@ rescue LoadError => e
|
|
|
14
14
|
exit
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
options = { :force => false }
|
|
17
|
+
options = { :force => false, :issue => nil }
|
|
18
18
|
|
|
19
19
|
opt_parser = OptionParser.new do |opt|
|
|
20
20
|
opt.banner = "Usage: git-jira [COMMANDS] [OPTIONS]"
|
|
21
|
+
opt.separator "Alternative: gj [COMMANDS] [OPTIONS]"
|
|
21
22
|
opt.separator ""
|
|
22
23
|
opt.separator "Commands"
|
|
23
|
-
opt.separator " init [-f | --force]
|
|
24
|
-
opt.separator "
|
|
25
|
-
opt.separator "
|
|
24
|
+
opt.separator " init [-f | --force] setup the current repository to be able to connect to a JIRA project"
|
|
25
|
+
opt.separator " config output the configuration fields as specified under .git/config"
|
|
26
|
+
opt.separator " list returns a list of branches with related issue information"
|
|
27
|
+
opt.separator " describe [-i | --issue] verbose issue information related to the current branch or specified issue"
|
|
26
28
|
opt.separator ""
|
|
29
|
+
opt.separator "Options"
|
|
27
30
|
|
|
28
31
|
opt.on("-h", "--help", "help") do
|
|
29
32
|
STDOUT.puts opt_parser
|
|
30
|
-
exit
|
|
33
|
+
exit 0
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
opt.on("-v", "--version", "print out current Version number") do
|
|
34
37
|
STDOUT.puts "gitjira-#{Gitjira::VERSION}"
|
|
35
|
-
exit
|
|
38
|
+
exit 0
|
|
36
39
|
end
|
|
37
40
|
|
|
38
41
|
opt.on("-f", "--force", "force overwrite of .git/config [gitjira] block") do
|
|
@@ -42,29 +45,44 @@ opt_parser = OptionParser.new do |opt|
|
|
|
42
45
|
opt.on("-i", "--issue [ISSUE]", "specify an issue number, e.g. PROJ-123 or 123") do |i|
|
|
43
46
|
options[:issue] = i if i
|
|
44
47
|
end
|
|
48
|
+
|
|
49
|
+
opt.separator ""
|
|
50
|
+
opt.separator "Copyright (C) 2013 Sigimera Ltd."
|
|
45
51
|
end
|
|
46
52
|
|
|
47
53
|
opt_parser.parse!
|
|
48
54
|
|
|
49
|
-
|
|
50
|
-
when "init"
|
|
51
|
-
Gitjira::Setup.init(options[:force])
|
|
52
|
-
when "list"
|
|
55
|
+
def list
|
|
53
56
|
unless Gitjira::Setup.setup?
|
|
54
|
-
STDERR.puts "[SETUP] This repository is not setup
|
|
55
|
-
exit
|
|
57
|
+
STDERR.puts "[SETUP] This repository is not setup, please execute: `git-jira init`"
|
|
58
|
+
exit 1
|
|
56
59
|
end
|
|
57
60
|
begin
|
|
58
|
-
Gitjira::InformationFetching.branches
|
|
61
|
+
exit Gitjira::InformationFetching.branches
|
|
59
62
|
rescue => e
|
|
60
63
|
STDERR.puts "[ERROR] Not able to fetch issue information from JIRA, through exception: #{e}"
|
|
64
|
+
exit 2
|
|
61
65
|
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
case ARGV[0]
|
|
69
|
+
when "init"
|
|
70
|
+
exit Gitjira::Setup.init(options[:force])
|
|
71
|
+
when "config"
|
|
72
|
+
puts "JIRA Host...........: #{Gitjira::InformationFetching.host}"
|
|
73
|
+
puts "JIRA Project Key....: #{Gitjira::InformationFetching.project_key}"
|
|
74
|
+
puts "JIRA Username.......: #{Gitjira::InformationFetching.username}"
|
|
75
|
+
exit 0
|
|
76
|
+
when "list"
|
|
77
|
+
list
|
|
62
78
|
when "describe"
|
|
63
79
|
begin
|
|
64
|
-
Gitjira::InformationFetching.describe(options[:issue])
|
|
80
|
+
exit Gitjira::InformationFetching.describe(options[:issue])
|
|
65
81
|
rescue => e
|
|
66
82
|
STDERR.puts "[ERROR] Not able to fetch issue information from JIRA, through exception: #{e}"
|
|
83
|
+
exit 2
|
|
67
84
|
end
|
|
68
85
|
else
|
|
69
|
-
|
|
86
|
+
list
|
|
70
87
|
end
|
|
88
|
+
|
data/bin/gj
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#####
|
|
3
|
+
# Copyright (c) 2013 by Sigimera Ltd.
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#####
|
|
6
|
+
require 'rubygems'
|
|
7
|
+
require 'optparse'
|
|
8
|
+
require 'json'
|
|
9
|
+
|
|
10
|
+
begin
|
|
11
|
+
require "gitjira"
|
|
12
|
+
rescue LoadError => e
|
|
13
|
+
STDERR.puts "Install the missing library:\n\t \e[0;36m$\e[m \e[0;32mgem install gitjira\e[m"
|
|
14
|
+
exit
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
options = { :force => false, :issue => nil }
|
|
18
|
+
|
|
19
|
+
opt_parser = OptionParser.new do |opt|
|
|
20
|
+
opt.banner = "Usage: git-jira [COMMANDS] [OPTIONS]"
|
|
21
|
+
opt.separator "Alternative: gj [COMMANDS] [OPTIONS]"
|
|
22
|
+
opt.separator ""
|
|
23
|
+
opt.separator "Commands"
|
|
24
|
+
opt.separator " init [-f | --force] setup the current repository to be able to connect to a JIRA project"
|
|
25
|
+
opt.separator " config output the configuration fields as specified under .git/config"
|
|
26
|
+
opt.separator " list returns a list of branches with related issue information"
|
|
27
|
+
opt.separator " describe [-i | --issue] verbose issue information related to the current branch or specified issue"
|
|
28
|
+
opt.separator ""
|
|
29
|
+
opt.separator "Options"
|
|
30
|
+
|
|
31
|
+
opt.on("-h", "--help", "help") do
|
|
32
|
+
STDOUT.puts opt_parser
|
|
33
|
+
exit 0
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
opt.on("-v", "--version", "print out current Version number") do
|
|
37
|
+
STDOUT.puts "gitjira-#{Gitjira::VERSION}"
|
|
38
|
+
exit 0
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
opt.on("-f", "--force", "force overwrite of .git/config [gitjira] block") do
|
|
42
|
+
options[:force] = true
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
opt.on("-i", "--issue [ISSUE]", "specify an issue number, e.g. PROJ-123 or 123") do |i|
|
|
46
|
+
options[:issue] = i if i
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
opt.separator ""
|
|
50
|
+
opt.separator "Copyright (C) 2013 Sigimera Ltd."
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
opt_parser.parse!
|
|
54
|
+
|
|
55
|
+
def list
|
|
56
|
+
unless Gitjira::Setup.setup?
|
|
57
|
+
STDERR.puts "[SETUP] This repository is not setup, please execute: `git-jira init`"
|
|
58
|
+
exit 1
|
|
59
|
+
end
|
|
60
|
+
begin
|
|
61
|
+
exit Gitjira::InformationFetching.branches
|
|
62
|
+
rescue => e
|
|
63
|
+
STDERR.puts "[ERROR] Not able to fetch issue information from JIRA, through exception: #{e}"
|
|
64
|
+
exit 2
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
case ARGV[0]
|
|
69
|
+
when "init"
|
|
70
|
+
exit Gitjira::Setup.init(options[:force])
|
|
71
|
+
when "config"
|
|
72
|
+
puts "JIRA Host...........: #{Gitjira::InformationFetching.host}"
|
|
73
|
+
puts "JIRA Project Key....: #{Gitjira::InformationFetching.project_key}"
|
|
74
|
+
puts "JIRA Username.......: #{Gitjira::InformationFetching.username}"
|
|
75
|
+
exit 0
|
|
76
|
+
when "list"
|
|
77
|
+
list
|
|
78
|
+
when "describe"
|
|
79
|
+
begin
|
|
80
|
+
exit Gitjira::InformationFetching.describe(options[:issue])
|
|
81
|
+
rescue => e
|
|
82
|
+
STDERR.puts "[ERROR] Not able to fetch issue information from JIRA, through exception: #{e}"
|
|
83
|
+
exit 2
|
|
84
|
+
end
|
|
85
|
+
else
|
|
86
|
+
list
|
|
87
|
+
end
|
|
88
|
+
|
|
@@ -30,11 +30,16 @@ class Gitjira::InformationFetching
|
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
if issues_printed.size == 0
|
|
34
|
+
STDERR.puts "[Warning] No branch found that is related to an issue. You can try `git-jira describe -i ###`"
|
|
35
|
+
return 1
|
|
36
|
+
else
|
|
37
|
+
return 0
|
|
38
|
+
end
|
|
34
39
|
end
|
|
35
40
|
|
|
36
41
|
def self.describe(issue = nil)
|
|
37
|
-
issue = "#{self.project_key}-#{issue}" if issue and not issue.start_with?(self.project_key)
|
|
42
|
+
issue = "#{self.project_key}-#{issue}" if issue and not issue.to_s.start_with?(self.project_key)
|
|
38
43
|
issue = self.extract_issue unless issue
|
|
39
44
|
|
|
40
45
|
if issue
|
|
@@ -66,11 +71,15 @@ class Gitjira::InformationFetching
|
|
|
66
71
|
puts ""
|
|
67
72
|
puts "#{fields['description']}"
|
|
68
73
|
end
|
|
74
|
+
|
|
75
|
+
return 0
|
|
69
76
|
else
|
|
70
77
|
puts "[Error] Not able to extract issue information of '#{issue}'"
|
|
78
|
+
return 2
|
|
71
79
|
end
|
|
72
80
|
else
|
|
73
|
-
puts "[Warning] You are currently in no branch
|
|
81
|
+
puts "[Warning] You are currently in no issue related branch. You can try `git-jira describe -i ###`"
|
|
82
|
+
return 1
|
|
74
83
|
end
|
|
75
84
|
end
|
|
76
85
|
|
|
@@ -117,6 +126,14 @@ class Gitjira::InformationFetching
|
|
|
117
126
|
`git config --local --get gitjira.host`.chomp
|
|
118
127
|
end
|
|
119
128
|
|
|
129
|
+
def self.username
|
|
130
|
+
encoded = self.credentials
|
|
131
|
+
credentials = Base64.strict_decode64(encoded)
|
|
132
|
+
username = credentials.split(":").first
|
|
133
|
+
encoded = credentials = nil
|
|
134
|
+
username
|
|
135
|
+
end
|
|
136
|
+
|
|
120
137
|
private
|
|
121
138
|
def self.fetch_issue_json(issue_name)
|
|
122
139
|
jira_url = "#{self.host}rest/api/2/issue/"
|
data/lib/gitjira/setup.rb
CHANGED
|
@@ -5,12 +5,9 @@ class Gitjira::Setup
|
|
|
5
5
|
if self.setup? and not force
|
|
6
6
|
STDERR.puts "Repository is configured. Overwrite with:"
|
|
7
7
|
STDERR.puts "\t$ git-jira init -f # or git-jira init --force."
|
|
8
|
-
return
|
|
8
|
+
return 1
|
|
9
9
|
end
|
|
10
|
-
host = nil
|
|
11
|
-
username = nil
|
|
12
|
-
password = nil
|
|
13
|
-
projectkey = nil
|
|
10
|
+
host = username = password = projectkey= nil
|
|
14
11
|
|
|
15
12
|
host = ask("JIRA host (e.g. https://jira.example.org): ")
|
|
16
13
|
host = "#{host}/" if not host.empty? and not host.end_with?("/")
|
|
@@ -26,8 +23,10 @@ class Gitjira::Setup
|
|
|
26
23
|
`git config --local gitjira.host #{host}`
|
|
27
24
|
`git config --local gitjira.credentials #{base64.to_s}`
|
|
28
25
|
`git config --local gitjira.projectkey #{projectkey}`
|
|
26
|
+
return 0
|
|
29
27
|
else
|
|
30
28
|
STDERR.puts "[ERROR] Please fill out all needed fields."
|
|
29
|
+
return 1
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
end
|
data/lib/gitjira/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gitjira
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Oberhauser
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-06-
|
|
11
|
+
date: 2013-06-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|
|
@@ -72,6 +72,7 @@ email:
|
|
|
72
72
|
- alex.oberhauser@sigimera.org
|
|
73
73
|
executables:
|
|
74
74
|
- git-jira
|
|
75
|
+
- gj
|
|
75
76
|
extensions: []
|
|
76
77
|
extra_rdoc_files: []
|
|
77
78
|
files:
|
|
@@ -82,6 +83,7 @@ files:
|
|
|
82
83
|
- README.md
|
|
83
84
|
- Rakefile
|
|
84
85
|
- bin/git-jira
|
|
86
|
+
- bin/gj
|
|
85
87
|
- gitjira.gemspec
|
|
86
88
|
- lib/gitjira.rb
|
|
87
89
|
- lib/gitjira/information_fetching.rb
|