pair_see 0.1.0 → 0.1.1

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: 4468520de0bab522937f9add129ee9fcc5139248
4
- data.tar.gz: fc21650e37c36b1c981458e7b9706309bb958fb9
3
+ metadata.gz: 91867b4aa809ce97b3d2ebd3c89d4f63bcc4235d
4
+ data.tar.gz: 810cb42dcf300ae3d17b3fc5de02b130a8a1b865
5
5
  SHA512:
6
- metadata.gz: 3fc1a18cc03c97cc058020114b6a9e8dfb6a82cc1829726d1f56e750870067a64a198466b7102521a542a6fb8241aaf5e750a5cc4cbc5a49aeadb16b1b809821
7
- data.tar.gz: 8b26eacc964788b574231ab8e6be2cc5521a3b38bd3bdb45b3aba484fdac7ecae6a4436a9efd1dde8cd85a83a0da643837cd03378c74c6150f05312325122172
6
+ metadata.gz: fb5a8d573a3938fc02cc839d10358b74a09e4016a2bacad1bf9344944626ab218b32bbe64aeb9ecacd89d2efdd79bb153d94d5240ae1d24e73b0c8e15943e70d
7
+ data.tar.gz: 4589340a27248139639bc0693feb6a395cd5ee5a26d97247e0bf855a64dd809e670edabdc2aa10c1408d1d9d1da22b743e3cdbac9b235127c9db27912c2a1ff3
data/.gitignore CHANGED
@@ -9,4 +9,5 @@ config/config.yml
9
9
  /pkg/
10
10
  /spec/reports/
11
11
  /tmp/
12
- .DS_Store
12
+ .DS_Store
13
+ pair_see*.gem
data/Gemfile.lock CHANGED
@@ -2,9 +2,9 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  pair_see (0.1.0)
5
- git
6
- trollop
7
- yamler
5
+ git (~> 1.2)
6
+ trollop (~> 2.0)
7
+ yamler (~> 0.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
@@ -49,17 +49,17 @@ GEM
49
49
  multi_json (~> 1.0)
50
50
  simplecov-html (~> 0.9.0)
51
51
  simplecov-html (0.9.0)
52
- trollop (2.1.1)
52
+ trollop (2.1.2)
53
53
  yamler (0.1.0)
54
54
 
55
55
  PLATFORMS
56
56
  ruby
57
57
 
58
58
  DEPENDENCIES
59
- bundler
60
- codeclimate-test-reporter
59
+ bundler (~> 1.8)
60
+ codeclimate-test-reporter (~> 0.4.7)
61
61
  pair_see!
62
- rake
63
- rake_commit
64
- rspec
65
- rubocop
62
+ rake (~> 10.4)
63
+ rake_commit (~> 1.1.0)
64
+ rspec (~> 3.2)
65
+ rubocop (~> 0.29)
data/bin/pairsee CHANGED
@@ -15,9 +15,9 @@ opts = Trollop.options do
15
15
  end
16
16
 
17
17
  def run_command(opts)
18
- log_lines = LogLines.new(opts[:root], opts[:after])
18
+ log_lines = PairSee::LogLines.new(opts[:root], opts[:after])
19
19
 
20
- pair_see = Seer.new(log_lines, opts[:config])
20
+ pair_see = PairSee::Seer.new(log_lines, opts[:config])
21
21
  if opts[:extras]
22
22
  pair_see.commits_not_by_known_pair
23
23
  elsif opts[:latest]
data/lib/pair_see/card.rb CHANGED
@@ -1,18 +1,20 @@
1
- class Card
2
- attr_reader :card_name, :number_of_commits
1
+ module PairSee
2
+ class Card
3
+ attr_reader :card_name, :number_of_commits
3
4
 
4
- def initialize(card_name, number_of_commits, first_date, last_date)
5
- @card_name = card_name
6
- @number_of_commits = number_of_commits
7
- @first_date, @last_date = first_date, last_date
8
- end
5
+ def initialize(card_name, number_of_commits, first_date, last_date)
6
+ @card_name = card_name
7
+ @number_of_commits = number_of_commits
8
+ @first_date, @last_date = first_date, last_date
9
+ end
9
10
 
10
- def duration
11
- (@first_date - @last_date).to_i + 1
12
- end
11
+ def duration
12
+ (@first_date - @last_date).to_i + 1
13
+ end
13
14
 
14
- def ==(other)
15
- card_name == other.card_name
16
- number_of_commits == other.number_of_commits
17
- end
15
+ def ==(other)
16
+ card_name == other.card_name
17
+ number_of_commits == other.number_of_commits
18
+ end
19
+ end
18
20
  end
@@ -1,15 +1,17 @@
1
- class Combo
2
- attr_reader :count, :devs
1
+ module PairSee
2
+ class Combo
3
+ attr_reader :count, :devs
3
4
 
4
- def initialize(count, *devs)
5
- @count, @devs = count, devs
6
- end
5
+ def initialize(count, *devs)
6
+ @count, @devs = count, devs
7
+ end
7
8
 
8
- def to_s
9
- "#{devs.join ', '}: #{count}"
10
- end
9
+ def to_s
10
+ "#{devs.join ', '}: #{count}"
11
+ end
11
12
 
12
- def empty?
13
- count == 0
14
- end
13
+ def empty?
14
+ count == 0
15
+ end
16
+ end
15
17
  end
@@ -1,27 +1,29 @@
1
- class DateCombo
2
- attr_reader :date, :devs
1
+ module PairSee
2
+ class DateCombo
3
+ attr_reader :date, :devs
3
4
 
4
- def initialize(date, *devs)
5
- @date, @devs = date, devs
6
- end
5
+ def initialize(date, *devs)
6
+ @date, @devs = date, devs
7
+ end
7
8
 
8
- def to_s
9
- if date.nil?
10
- "#{devs.join ', '}: not yet"
11
- else
12
- "#{devs.join ', '}: #{date}"
9
+ def to_s
10
+ if date.nil?
11
+ "#{devs.join ', '}: not yet"
12
+ else
13
+ "#{devs.join ', '}: #{date}"
14
+ end
13
15
  end
14
- end
15
16
 
16
- def <=>(other)
17
- if date && other.date
18
- date <=> other.date
19
- elsif date
20
- 1
21
- elsif other.date
22
- -1
23
- else
24
- 0
17
+ def <=>(other)
18
+ if date && other.date
19
+ date <=> other.date
20
+ elsif date
21
+ 1
22
+ elsif other.date
23
+ -1
24
+ else
25
+ 0
26
+ end
25
27
  end
26
28
  end
27
29
  end
@@ -1,54 +1,56 @@
1
- require 'time'
2
- class LogLine
3
- attr_reader :line
1
+ module PairSee
2
+ class LogLine
3
+ require 'time'
4
+ attr_reader :line
4
5
 
5
- def initialize(line)
6
- @line = line
7
- end
6
+ def initialize(line)
7
+ @line = line
8
+ end
8
9
 
9
- def authored_by?(*people)
10
- people.empty? ? false : people.all? do |person|
11
- /(^|\s+|\W)#{person}(\s+|$|\W)/i =~ line
10
+ def authored_by?(*people)
11
+ people.empty? ? false : people.all? do |person|
12
+ /(^|\s+|\W)#{person}(\s+|$|\W)/i =~ line
13
+ end
12
14
  end
13
- end
14
15
 
15
- def contains_card?(card_prefix)
16
- line.match(card_prefix)
17
- end
16
+ def contains_card?(card_prefix)
17
+ line.match(card_prefix)
18
+ end
18
19
 
19
- def contains_card_name?(card_name)
20
- git_regex = /#{card_name}[\]\s\[,:]/
21
- git_matcher = line.match(git_regex)
22
- !git_matcher.nil?
23
- end
20
+ def contains_card_name?(card_name)
21
+ git_regex = /#{card_name}[\]\s\[,:]/
22
+ git_matcher = line.match(git_regex)
23
+ !git_matcher.nil?
24
+ end
24
25
 
25
- def card_name(card_prefix)
26
- regex = /(#{card_prefix}\d+)/
27
- matcher = line.match(regex)
28
- matcher.nil? ? nil : (line.match regex)[1]
29
- end
26
+ def card_name(card_prefix)
27
+ regex = /(#{card_prefix}\d+)/
28
+ matcher = line.match(regex)
29
+ matcher.nil? ? nil : (line.match regex)[1]
30
+ end
30
31
 
31
- def card_number(card_prefix)
32
- card_num = card_name(card_prefix)
33
- card_num ? card_num.gsub(card_prefix, '') : nil
34
- end
32
+ def card_number(card_prefix)
33
+ card_num = card_name(card_prefix)
34
+ card_num ? card_num.gsub(card_prefix, '') : nil
35
+ end
35
36
 
36
- def merge_commit?
37
- line.match('Merge remote-tracking branch') || line.match('Merge branch')
38
- end
37
+ def merge_commit?
38
+ line.match('Merge remote-tracking branch') || line.match('Merge branch')
39
+ end
39
40
 
40
- def date
41
- regex = /(\d{4}-\d{2}-\d{2})/
42
- matcher = line.match(regex)
43
- part_to_parse = matcher.nil? ? '' : (line.match regex)[1]
44
- Date.parse(part_to_parse)
45
- end
41
+ def date
42
+ regex = /(\d{4}-\d{2}-\d{2})/
43
+ matcher = line.match(regex)
44
+ part_to_parse = matcher.nil? ? '' : (line.match regex)[1]
45
+ Date.parse(part_to_parse)
46
+ end
46
47
 
47
- def not_by_pair?(devs)
48
- devs.any? { |dev| authored_by?(dev) || merge_commit? }
49
- end
48
+ def not_by_pair?(devs)
49
+ devs.any? { |dev| authored_by?(dev) || merge_commit? }
50
+ end
50
51
 
51
- def to_s
52
- line
52
+ def to_s
53
+ line
54
+ end
53
55
  end
54
56
  end
@@ -1,49 +1,51 @@
1
- require_relative 'log_line'
2
- require 'git'
1
+ module PairSee
2
+ class LogLines
3
+ require_relative 'log_line'
4
+ require 'git'
3
5
 
4
- class LogLines
5
- include Enumerable
6
+ include Enumerable
6
7
 
7
- def initialize(git_home, date_string)
8
- @lines = _lines_from(git_home, date_string)
9
- end
8
+ def initialize(git_home, date_string)
9
+ @lines = _lines_from(git_home, date_string)
10
+ end
10
11
 
11
- def _lines_from(git_home, date_string)
12
- g = Git.open(git_home)
13
- g.log.since(date_string).map do |l|
14
- LogLine.new("#{l.date} #{l.message}")
12
+ def _lines_from(git_home, date_string)
13
+ g = Git.open(git_home)
14
+ g.log.since(date_string).map do |l|
15
+ LogLine.new("#{l.date} #{l.message}")
16
+ end
15
17
  end
16
- end
17
18
 
18
- def each(&block)
19
- lines.each &block
20
- end
19
+ def each(&block)
20
+ lines.each &block
21
+ end
21
22
 
22
- def last
23
- lines.last
24
- end
23
+ def last
24
+ lines.last
25
+ end
25
26
 
26
- def active?(dev)
27
- any? do |log_line|
28
- log_line.authored_by?(dev)
27
+ def active?(dev)
28
+ any? do |log_line|
29
+ log_line.authored_by?(dev)
30
+ end
29
31
  end
30
- end
31
32
 
32
- def commits_for_pair(person1, person2)
33
- select { |log_line| log_line.authored_by?(person1, person2) }
34
- end
33
+ def commits_for_pair(person1, person2)
34
+ select { |log_line| log_line.authored_by?(person1, person2) }
35
+ end
35
36
 
36
- def commits_not_by_known_pair(devs)
37
- reject { |log_line| log_line.not_by_pair? devs }
38
- end
37
+ def commits_not_by_known_pair(devs)
38
+ reject { |log_line| log_line.not_by_pair? devs }
39
+ end
39
40
 
40
- def solo_commits(devs, dev)
41
- select do |log_line|
42
- log_line.authored_by?(dev) && (devs - [dev]).none? { |d| log_line.authored_by?(d) }
41
+ def solo_commits(devs, dev)
42
+ select do |log_line|
43
+ log_line.authored_by?(dev) && (devs - [dev]).none? { |d| log_line.authored_by?(d) }
44
+ end
43
45
  end
44
- end
45
46
 
46
- private
47
+ private
47
48
 
48
- attr_reader :lines
49
+ attr_reader :lines
50
+ end
49
51
  end
data/lib/pair_see/seer.rb CHANGED
@@ -1,134 +1,136 @@
1
- class Seer
2
- require 'yamler'
3
- require_relative 'combo'
4
- require_relative 'date_combo'
5
- require_relative 'log_lines'
6
- require_relative 'card'
7
-
8
- attr_reader :log_lines, :devs, :dev_pairs, :card_prefix
9
-
10
- def initialize(log_lines, config_file)
11
- @log_lines = log_lines
12
- @devs = active_devs(config_file)
13
- @dev_pairs = devs.combination(2)
14
- @card_prefix = get_card_prefix(config_file)
15
- end
16
-
17
- def cards_per_person
18
- @devs.map do |dev|
19
- { dev => cards_dev_worked_on(log_lines, dev) }
20
- end.inject({}) do |result, element|
21
- result.merge(element)
22
- end.map do |dev_name, cards_worked|
23
- { dev_name => cards_worked.uniq }
24
- end.inject({}) do |result, element|
25
- result.merge(element)
26
- end.map do|dev, cards|
27
- "#{dev}: [#{cards.size} cards] #{cards.sort.join(', ')}"
28
- end
29
- end
30
-
31
- def cards_dev_worked_on(log_lines, dev)
32
- log_lines.select do |log_line|
33
- log_line.authored_by?(dev)
34
- end.map do|log_line|
35
- log_line.card_number(@card_prefix)
36
- end.compact
37
- end
38
-
39
- def pretty_card_data
40
- card_data(card_prefix).map do |card|
41
- "#{card.card_name} - - - commits: #{card.number_of_commits} - - - duration: #{card.duration} days " unless card.nil?
42
- end
43
- end
44
-
45
- def card_data(card_prefix)
46
- card_numbers(card_prefix).map do |card_name|
47
- commits = commits_on_card(card_name)
48
- Card.new(card_name, commits.count, commits.first.date, commits.last.date)
49
- end.sort_by(&:duration).reverse
50
- end
51
-
52
- def commits_on_card(card_name)
53
- log_lines.select { |line| line.contains_card_name?(card_name) }
54
- end
55
-
56
- def card_numbers(card_prefix)
57
- log_lines.select do |line|
58
- line.contains_card?(card_prefix)
59
- end.map do |line|
60
- line.card_name(card_prefix)
61
- end.uniq.compact
62
- end
63
-
64
- def get_card_prefix(config_file)
65
- config = YAML.load_file(config_file)
66
- config['card_prefix']
67
- end
68
-
69
- def active_devs(config_file)
70
- config = YAML.load_file(config_file)
71
- devs_in_config = config['names'].split(' ')
72
- devs_in_config.select do |dev|
73
- is_active(dev)
74
- end
75
- end
76
-
77
- def is_active(dev)
78
- log_lines.active? dev
79
- end
80
-
81
- def pair_commits
82
- dev_pairs.map do |person1, person2|
83
- Combo.new(commits_for_pair(person1, person2).count, person1, person2)
84
- end
85
- end
86
-
87
- def solo_commits
88
- devs.map do |dev|
89
- Combo.new(log_lines.solo_commits(devs, dev).count, dev)
90
- end
91
- end
92
-
93
- def all_commits
94
- (pair_commits + solo_commits).sort_by(&:count).reject(&:empty?).map(&:to_s)
95
- end
96
-
97
- def commits_for_pair(person1, person2)
98
- log_lines.commits_for_pair person1, person2
99
- end
100
-
101
- def commits_not_by_known_pair
102
- log_lines.commits_not_by_known_pair devs
103
- end
104
-
105
- def most_recent_commit_date(person1, person2)
106
- recent_commit = commits_for_pair(person1, person2).sort_by(&:date).first
107
- recent_commit ? recent_commit.date : nil
108
- end
109
-
110
- def all_most_recent_commits
111
- dev_pairs.map do |person1, person2|
112
- DateCombo.new(most_recent_commit_date(person1, person2), person1, person2)
113
- end.sort.reverse.map &:to_s
114
- end
115
-
116
- def recommended_pairings
117
- should_pair = unpaired_in_range
118
- should_pair.empty? ? least_recent_pair : should_pair
119
- end
120
-
121
- def least_recent_pair
122
- devs.select do |dev|
123
- log_lines.last.line.match(dev)
124
- end.join(', ')
125
- end
126
-
127
- def unpaired_in_range
128
- dev_pairs.select do |person1, person2|
129
- most_recent_commit_date(person1, person2).nil?
130
- end.map do |person1, person2|
131
- "#{person1}, #{person2}"
132
- end
133
- end
1
+ module PairSee
2
+ class Seer
3
+ require 'yamler'
4
+ require_relative 'combo'
5
+ require_relative 'date_combo'
6
+ require_relative 'log_lines'
7
+ require_relative 'card'
8
+
9
+ attr_reader :log_lines, :devs, :dev_pairs, :card_prefix
10
+
11
+ def initialize(log_lines, config_file)
12
+ @log_lines = log_lines
13
+ @devs = active_devs(config_file)
14
+ @dev_pairs = devs.combination(2)
15
+ @card_prefix = get_card_prefix(config_file)
16
+ end
17
+
18
+ def cards_per_person
19
+ @devs.map do |dev|
20
+ { dev => cards_dev_worked_on(log_lines, dev) }
21
+ end.inject({}) do |result, element|
22
+ result.merge(element)
23
+ end.map do |dev_name, cards_worked|
24
+ { dev_name => cards_worked.uniq }
25
+ end.inject({}) do |result, element|
26
+ result.merge(element)
27
+ end.map do|dev, cards|
28
+ "#{dev}: [#{cards.size} cards] #{cards.sort.join(', ')}"
29
+ end
30
+ end
31
+
32
+ def cards_dev_worked_on(log_lines, dev)
33
+ log_lines.select do |log_line|
34
+ log_line.authored_by?(dev)
35
+ end.map do|log_line|
36
+ log_line.card_number(@card_prefix)
37
+ end.compact
38
+ end
39
+
40
+ def pretty_card_data
41
+ card_data(card_prefix).map do |card|
42
+ "#{card.card_name} - - - commits: #{card.number_of_commits} - - - duration: #{card.duration} days " unless card.nil?
43
+ end
44
+ end
45
+
46
+ def card_data(card_prefix)
47
+ card_numbers(card_prefix).map do |card_name|
48
+ commits = commits_on_card(card_name)
49
+ Card.new(card_name, commits.count, commits.first.date, commits.last.date)
50
+ end.sort_by(&:duration).reverse
51
+ end
52
+
53
+ def commits_on_card(card_name)
54
+ log_lines.select { |line| line.contains_card_name?(card_name) }
55
+ end
56
+
57
+ def card_numbers(card_prefix)
58
+ log_lines.select do |line|
59
+ line.contains_card?(card_prefix)
60
+ end.map do |line|
61
+ line.card_name(card_prefix)
62
+ end.uniq.compact
63
+ end
64
+
65
+ def get_card_prefix(config_file)
66
+ config = YAML.load_file(config_file)
67
+ config['card_prefix']
68
+ end
69
+
70
+ def active_devs(config_file)
71
+ config = YAML.load_file(config_file)
72
+ devs_in_config = config['names'].split(' ')
73
+ devs_in_config.select do |dev|
74
+ is_active(dev)
75
+ end
76
+ end
77
+
78
+ def is_active(dev)
79
+ log_lines.active? dev
80
+ end
81
+
82
+ def pair_commits
83
+ dev_pairs.map do |person1, person2|
84
+ Combo.new(commits_for_pair(person1, person2).count, person1, person2)
85
+ end
86
+ end
87
+
88
+ def solo_commits
89
+ devs.map do |dev|
90
+ Combo.new(log_lines.solo_commits(devs, dev).count, dev)
91
+ end
92
+ end
93
+
94
+ def all_commits
95
+ (pair_commits + solo_commits).sort_by(&:count).reject(&:empty?).map(&:to_s)
96
+ end
97
+
98
+ def commits_for_pair(person1, person2)
99
+ log_lines.commits_for_pair person1, person2
100
+ end
101
+
102
+ def commits_not_by_known_pair
103
+ log_lines.commits_not_by_known_pair devs
104
+ end
105
+
106
+ def most_recent_commit_date(person1, person2)
107
+ recent_commit = commits_for_pair(person1, person2).sort_by(&:date).first
108
+ recent_commit ? recent_commit.date : nil
109
+ end
110
+
111
+ def all_most_recent_commits
112
+ dev_pairs.map do |person1, person2|
113
+ DateCombo.new(most_recent_commit_date(person1, person2), person1, person2)
114
+ end.sort.reverse.map &:to_s
115
+ end
116
+
117
+ def recommended_pairings
118
+ should_pair = unpaired_in_range
119
+ should_pair.empty? ? least_recent_pair : should_pair
120
+ end
121
+
122
+ def least_recent_pair
123
+ devs.select do |dev|
124
+ log_lines.last.line.match(dev)
125
+ end.join(', ')
126
+ end
127
+
128
+ def unpaired_in_range
129
+ dev_pairs.select do |person1, person2|
130
+ most_recent_commit_date(person1, person2).nil?
131
+ end.map do |person1, person2|
132
+ "#{person1}, #{person2}"
133
+ end
134
+ end
135
+ end
134
136
  end
@@ -1,3 +1,3 @@
1
1
  module PairSee
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
data/lib/pair_see.rb CHANGED
@@ -1 +1,5 @@
1
1
  require_relative 'pair_see/version.rb'
2
+ require_relative 'pair_see/seer.rb'
3
+
4
+ module PairSee
5
+ end
data/pair_see.gemspec CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ['compiledwrong@gmail.com']
11
11
 
12
12
  spec.summary = 'See metrics about pair programming from the commandline'
13
+ spec.description = 'See commits not by known pair, most recent commits by pairs, recommended pairings, card duration and pairing data, and cards each person has worked on'
13
14
  spec.homepage = 'https://github.com/compwron/pairsee'
14
15
  spec.license = 'MIT'
15
16
 
@@ -18,14 +19,14 @@ Gem::Specification.new do |spec|
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
20
  spec.require_paths = ['lib']
20
21
 
21
- spec.add_dependency 'yamler'
22
- spec.add_dependency 'trollop'
23
- spec.add_dependency 'git'
22
+ spec.add_dependency 'yamler', '~> 0.1'
23
+ spec.add_dependency 'trollop', '~> 2.0'
24
+ spec.add_dependency 'git', '~> 1.2'
24
25
 
25
- spec.add_development_dependency 'bundler'
26
- spec.add_development_dependency 'rake'
27
- spec.add_development_dependency 'rspec'
28
- spec.add_development_dependency 'rubocop'
29
- spec.add_development_dependency 'rake_commit'
30
- spec.add_development_dependency 'codeclimate-test-reporter'
26
+ spec.add_development_dependency 'bundler', '~> 1.8'
27
+ spec.add_development_dependency 'rake', '~> 10.4'
28
+ spec.add_development_dependency 'rspec', '~> 3.2'
29
+ spec.add_development_dependency 'rubocop', '~> 0.29'
30
+ spec.add_development_dependency 'rake_commit', '~> 1.1'
31
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4.7'
31
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pair_see
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - compwron
@@ -14,129 +14,130 @@ dependencies:
14
14
  name: yamler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '0.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '0.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: trollop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '2.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: git
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '1.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '1.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.8'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '10.4'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '10.4'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '3.2'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '3.2'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '0.29'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '0.29'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake_commit
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '1.1'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: '1.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: codeclimate-test-reporter
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 0.4.7
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
139
- description:
138
+ version: 0.4.7
139
+ description: See commits not by known pair, most recent commits by pairs, recommended
140
+ pairings, card duration and pairing data, and cards each person has worked on
140
141
  email:
141
142
  - compiledwrong@gmail.com
142
143
  executables: []