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 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: