git_scf 0.0.1 → 0.0.2
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.
- data/README.md +47 -1
- data/lib/git_scf/env_config.rb +11 -1
- data/lib/git_scf/jira.rb +5 -0
- data/lib/git_scf/logger.rb +4 -4
- data/lib/git_scf/subcommands/review.rb +1 -1
- data/lib/git_scf/ticket.rb +5 -5
- data/lib/git_scf/version.rb +1 -1
- data/lib/git_scf.rb +6 -5
- metadata +5 -5
data/README.md
CHANGED
@@ -1 +1,47 @@
|
|
1
|
-
|
1
|
+
## GitScf
|
2
|
+
Git tools to simplify the workflow at SeeClickFix
|
3
|
+
|
4
|
+
### Installation
|
5
|
+
|
6
|
+
$ gem install git_scf
|
7
|
+
|
8
|
+
Configure jira credentials. Either set them in your environment:
|
9
|
+
|
10
|
+
$ export JIRA_USERNAME="your-jira-username"
|
11
|
+
$ export JIRA_PASSWORD="your-jira-password"
|
12
|
+
|
13
|
+
or in your git config:
|
14
|
+
|
15
|
+
$ git config --global gitscf.jirausername "your-jira-username"
|
16
|
+
$ git config --global gitscf.jirapassword "your-jira-password"
|
17
|
+
|
18
|
+
### Usage
|
19
|
+
|
20
|
+
Usage: git scf (start|show|review|finish) [issue_number]
|
21
|
+
-v, --verbose Output more information
|
22
|
+
-h, --help Display this screen
|
23
|
+
|
24
|
+
START - Start a feature branch based on the ticket ID.
|
25
|
+
|
26
|
+
$ git scf start SCF-100
|
27
|
+
|
28
|
+
SHOW - Show jira information about tickets.
|
29
|
+
|
30
|
+
$ git scf show # shows info on the current branch
|
31
|
+
$ git scf show -v # include description and comments
|
32
|
+
$ git scf show SCF-500 # specify a different ticket ID
|
33
|
+
|
34
|
+
REVIEW - Create a pull request in github on the current branch.
|
35
|
+
|
36
|
+
$ git scf review
|
37
|
+
|
38
|
+
FINISH - Close out the current feature branch and code review.
|
39
|
+
|
40
|
+
$ git scf finish
|
41
|
+
|
42
|
+
### Todo
|
43
|
+
Contributions are appreciated!
|
44
|
+
|
45
|
+
- Tests
|
46
|
+
- Better error handling
|
47
|
+
- Less backtick system calls
|
data/lib/git_scf/env_config.rb
CHANGED
@@ -5,6 +5,16 @@ class EnvConfig
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def get(key)
|
8
|
-
ENV[key] || repo.config["
|
8
|
+
ENV[key] || @repo.config["gitscf.#{git_key(key)}"]
|
9
|
+
end
|
10
|
+
|
11
|
+
def repo
|
12
|
+
@repo
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def git_key(key)
|
18
|
+
key.downcase.gsub('_','')
|
9
19
|
end
|
10
20
|
end
|
data/lib/git_scf/jira.rb
CHANGED
@@ -2,6 +2,7 @@ class Jira
|
|
2
2
|
require 'jira'
|
3
3
|
|
4
4
|
def initialize(config)
|
5
|
+
@config = config
|
5
6
|
options = { username: config.get('JIRA_USERNAME'),
|
6
7
|
password: config.get('JIRA_PASSWORD'),
|
7
8
|
use_ssl: true,
|
@@ -12,6 +13,10 @@ class Jira
|
|
12
13
|
@jira = JIRA::Client.new(options)
|
13
14
|
end
|
14
15
|
|
16
|
+
def config
|
17
|
+
@config
|
18
|
+
end
|
19
|
+
|
15
20
|
def ticket(id)
|
16
21
|
@jira.Issue.find(id)
|
17
22
|
end
|
data/lib/git_scf/logger.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
class Logger
|
2
2
|
|
3
|
-
LOG_PATH = '
|
4
|
-
LOG_FILE = 'log'
|
3
|
+
LOG_PATH = '.gitscf'
|
5
4
|
|
6
|
-
def initialize
|
5
|
+
def initialize(ticket)
|
7
6
|
`mkdir -p #{LOG_PATH}`
|
7
|
+
@filename = "#{ticket.id}"
|
8
8
|
end
|
9
9
|
|
10
10
|
def add(string)
|
@@ -14,6 +14,6 @@ class Logger
|
|
14
14
|
private
|
15
15
|
|
16
16
|
def log_file
|
17
|
-
"#{LOG_PATH}/#{
|
17
|
+
"#{LOG_PATH}/#{@filename}"
|
18
18
|
end
|
19
19
|
end
|
@@ -10,7 +10,7 @@ class Review
|
|
10
10
|
`git add .`
|
11
11
|
`git commit -am "#{@ticket.id} #review"`
|
12
12
|
`git push`
|
13
|
-
`hub pull-request "Addresses #{@ticket.id} please review." | pbcopy`
|
13
|
+
`hub pull-request "Addresses #{@ticket.id} #{@ticket.summary} please review." | pbcopy`
|
14
14
|
puts "The code-review URL is in your clipboard."
|
15
15
|
end
|
16
16
|
end
|
data/lib/git_scf/ticket.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Ticket
|
2
2
|
|
3
|
-
def initialize(
|
4
|
-
@repo = repo
|
3
|
+
def initialize(jira)
|
4
|
+
@repo = jira.config.repo
|
5
5
|
@jira = jira
|
6
6
|
end
|
7
7
|
|
@@ -10,19 +10,19 @@ class Ticket
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def branch_name
|
13
|
-
"#{id}-#{parameterize(summary)}"
|
13
|
+
"#{id}-#{parameterize(summary)[0..50]}"
|
14
14
|
end
|
15
15
|
|
16
16
|
def jira_ticket
|
17
17
|
@jira && @jira.ticket(id)
|
18
18
|
end
|
19
19
|
|
20
|
-
private
|
21
|
-
|
22
20
|
def summary
|
23
21
|
jira_ticket && jira_ticket.summary
|
24
22
|
end
|
25
23
|
|
24
|
+
private
|
25
|
+
|
26
26
|
def id_by_argument_or_branch
|
27
27
|
ARGV.size == 2 ? ARGV.pop : id_from_branch
|
28
28
|
end
|
data/lib/git_scf/version.rb
CHANGED
data/lib/git_scf.rb
CHANGED
@@ -45,13 +45,14 @@ module GitScf
|
|
45
45
|
rescue
|
46
46
|
puts "ERROR: Invalid git directory"
|
47
47
|
puts opts
|
48
|
-
exit
|
48
|
+
exit
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
config = EnvConfig.new(repo)
|
52
|
+
jira = Jira.new(config)
|
53
|
+
ticket = Ticket.new(jira)
|
54
|
+
logger = Logger.new(ticket)
|
55
|
+
|
55
56
|
case ARGV.first
|
56
57
|
when 'start'
|
57
58
|
Start.new(ticket, logger)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_scf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -64,17 +64,17 @@ dependencies:
|
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 0.17.0.b7
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 0.17.0.b7
|
78
78
|
description: ! " Provides git tools that match the SCF workflow. \n"
|
79
79
|
email: jeff@seeclickfix.com
|
80
80
|
executables:
|