grok_cli 1.0.1 → 1.1.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/grok_cli.gemspec +1 -0
- data/lib/grok_cli/git/log.rb +102 -0
- data/lib/grok_cli/git.rb +4 -0
- data/lib/grok_cli/version.rb +1 -1
- metadata +24 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6bc17609b99f535d31b36214e36de8e6613c29ec
|
|
4
|
+
data.tar.gz: 3316fe8771a757f89d78b645fba5431d89891d5b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e4cf47021f84248737b2114a5ae41377d176a4ea4d260c0d40dd09486a415d3fbc9f79386bfed692b0701210d247062165c6bcedde9872067cf0023a3a6019bd
|
|
7
|
+
data.tar.gz: e68a0ffc370c165fe7edcb177d70539f983a7c2644d3abaccc85175e6d1ab0dbe23ec2ff33f9d64793804b9fdf984aef85d9241feaa36ec4ba680070f36a7522
|
data/grok_cli.gemspec
CHANGED
|
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.11"
|
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
23
|
spec.add_development_dependency "minitest", "~> 5.0"
|
|
24
|
+
spec.add_runtime_dependency "git", '~> 1.3', '>= 1.3.0'
|
|
24
25
|
spec.add_runtime_dependency "gli", '~> 2.13', '>= 2.13.4'
|
|
25
26
|
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'git'
|
|
2
|
+
require 'erb'
|
|
3
|
+
require 'uri'
|
|
4
|
+
|
|
5
|
+
module GrokCLI::Git
|
|
6
|
+
class Log
|
|
7
|
+
|
|
8
|
+
def execute(since_hours_ago:, domains: )
|
|
9
|
+
pwd = Dir.pwd
|
|
10
|
+
git = Git.open(pwd)
|
|
11
|
+
|
|
12
|
+
map = {}
|
|
13
|
+
|
|
14
|
+
git.log.since("#{since_hours_ago} hours ago").reverse_each do |commit|
|
|
15
|
+
uris = URI.extract(commit.message)
|
|
16
|
+
|
|
17
|
+
uris.select! do |uri|
|
|
18
|
+
uri.match(domains) ? true : false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if uris.empty?
|
|
22
|
+
map['No Ticket'] ||= []
|
|
23
|
+
else
|
|
24
|
+
uris.each do |uri|
|
|
25
|
+
map[uri] ||= []
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
if uris.empty?
|
|
30
|
+
map['No Ticket'] << commit
|
|
31
|
+
else
|
|
32
|
+
uris.each do |uri|
|
|
33
|
+
map[uri] << commit
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
entries = map.map do |ticket, commits|
|
|
39
|
+
Entry.new(ticket: ticket, commits: commits).to_s
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
puts entries.join("\n#{'-'*72}\n\n")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class Entry
|
|
46
|
+
include ERB::Util
|
|
47
|
+
|
|
48
|
+
def initialize(ticket:, commits:)
|
|
49
|
+
@ticket = ticket
|
|
50
|
+
@commits = commits
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def to_s
|
|
54
|
+
ERB.new(<<~DOC
|
|
55
|
+
#{ticket}
|
|
56
|
+
|
|
57
|
+
#{commit_log}
|
|
58
|
+
DOC
|
|
59
|
+
).result(binding)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
attr_reader :ticket, :commits
|
|
65
|
+
|
|
66
|
+
def commit_log
|
|
67
|
+
commits.map do |commit|
|
|
68
|
+
sha = commit.sha[0..8]
|
|
69
|
+
message = commit.message.split("\n").first
|
|
70
|
+
|
|
71
|
+
"#{sha} (#{message})"
|
|
72
|
+
end.join("\n")
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
module GrokCLI
|
|
79
|
+
command 'git' do |c|
|
|
80
|
+
|
|
81
|
+
c.desc "Generate a git log organized by ticket"
|
|
82
|
+
c.long_desc <<-DESC
|
|
83
|
+
Generates a list of hashs and commit summaries organized by ticket
|
|
84
|
+
DESC
|
|
85
|
+
|
|
86
|
+
c.command 'log' do |c|
|
|
87
|
+
c.flag [:s, :since],
|
|
88
|
+
type: Integer,
|
|
89
|
+
default_value: 24,
|
|
90
|
+
desc: 'The number of hours since now to search the log'
|
|
91
|
+
|
|
92
|
+
c.flag [:d, :domains],
|
|
93
|
+
type: Regexp,
|
|
94
|
+
default_value: /trello\.com|atlassian\.net|asana\.com/,
|
|
95
|
+
desc: 'A regular expression to search against domain names'
|
|
96
|
+
|
|
97
|
+
c.action do |global_options,options,arguments|
|
|
98
|
+
GrokCLI::Git::Log.new.execute(since_hours_ago: options[:since], domains: options[:domains])
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
data/lib/grok_cli/git.rb
ADDED
data/lib/grok_cli/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grok_cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josh Freeman
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-05-
|
|
11
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -52,6 +52,26 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '5.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: git
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.3'
|
|
62
|
+
- - ">="
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: 1.3.0
|
|
65
|
+
type: :runtime
|
|
66
|
+
prerelease: false
|
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
68
|
+
requirements:
|
|
69
|
+
- - "~>"
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '1.3'
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 1.3.0
|
|
55
75
|
- !ruby/object:Gem::Dependency
|
|
56
76
|
name: gli
|
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -103,6 +123,8 @@ files:
|
|
|
103
123
|
- lib/grok_cli/docker/start.rb
|
|
104
124
|
- lib/grok_cli/docker/stop.rb
|
|
105
125
|
- lib/grok_cli/docker/update_etc_hosts.rb
|
|
126
|
+
- lib/grok_cli/git.rb
|
|
127
|
+
- lib/grok_cli/git/log.rb
|
|
106
128
|
- lib/grok_cli/version.rb
|
|
107
129
|
homepage: https://github.com/GrokInteractive/grok_cli
|
|
108
130
|
licenses:
|