grok_cli 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5b16fddc1287229cf0c851577d136f0b5dfd284
4
- data.tar.gz: 72bf38fcdbd0995ba00cb5670848be1fb9d33fc3
3
+ metadata.gz: 6bc17609b99f535d31b36214e36de8e6613c29ec
4
+ data.tar.gz: 3316fe8771a757f89d78b645fba5431d89891d5b
5
5
  SHA512:
6
- metadata.gz: de3e1b81111abb0394cacb29f6f67f8ae74fdf450b04ce5400394b2f1af1dda18004a73f927b99d4f75a201d109acd65bb2211014a2a4e4961c700405d115376
7
- data.tar.gz: 5938a1972645bfc5f3d57641e39ea1bbf2c1bde489d3cc30cef4ca76ff5b84f0d671a1a7f01a1a089391e9b55ce8bff3385d61ae3f5b3108ee9938b61ac20064
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
@@ -0,0 +1,4 @@
1
+ module GrokCLI
2
+ module Git
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
1
  module GrokCLI
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
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.1
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-03 00:00:00.000000000 Z
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: