githubstats 1.3.1 → 3.0.2

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
- SHA1:
3
- metadata.gz: 334ee21ca7fb6938f1db4dee0c756a4271bb95e8
4
- data.tar.gz: 34c665d0aae762ea44fd9226aef25f66880aaeda
2
+ SHA256:
3
+ metadata.gz: cbc52fb43a7ea21f49af181e9fceac0aaa61953ee1d2891029ba0678cdc50e38
4
+ data.tar.gz: 91cb1ba5ca68c13dd6b451ed20c1bf1d484fa52633b76c4ab8ef11c045bc98ce
5
5
  SHA512:
6
- metadata.gz: 19935983f0ab101ff208d2e0f1be1979368ccf83020c38292f03ecd4aff695901d719073a775638564a2b218c2f858b722d0913a67e73cb4510d7a282cb7e14d
7
- data.tar.gz: 10f8db4278cf6c2836c8544727ff780f9788a760dad1b01f7f9b1b7921611269c163f90bd9e5c2b8e59384f5c8d66eb935c6b5959b359c6e945499569e28db90
6
+ metadata.gz: 3ff5c12de669ffdc4ef973d7301a513364a56ac41e923bf41e7d77a029c63240709363de30ca43d684d9fd13ebd72e67222c7e16a45d62e9dd1497dc9332909e
7
+ data.tar.gz: 0ca40694b1d8f656697128a9b2b49a3f3a796eb68e4226e9e8bc57cb83b46cdf70edfc5d0562950d9f114f76058a2be789f4f9a90746cb6eb64d5cde3586587a
@@ -1,3 +1,4 @@
1
- 2.3.1
2
- 2.2.5
3
- 2.1.10
1
+ 2.6.1
2
+ 2.5.3
3
+ 2.4.5
4
+ 2.3.8
@@ -1,11 +1,11 @@
1
+ my_slug = 'akerl/githubstats'
2
+
3
+ Prospectus.extra_dep('file', 'prospectus_travis')
4
+ Prospectus.extra_dep('file', 'prospectus_gems')
5
+
1
6
  item do
2
- expected do
3
- static
4
- set 'green'
5
- end
7
+ noop
6
8
 
7
- actual do
8
- gemnasium
9
- slug 'akerl/githubstats'
10
- end
9
+ extend ProspectusGems::Gemspec.new
10
+ extend ProspectusTravis::Build.new(my_slug)
11
11
  end
@@ -1,2 +1,5 @@
1
- Encoding:
2
- Enabled: false
1
+ inherit_gem:
2
+ goodcop: .rubocop.yml
3
+ Metrics/BlockLength:
4
+ Exclude:
5
+ - 'spec/**/*'
@@ -0,0 +1,10 @@
1
+ dist: xenial
2
+ install:
3
+ - for i in $(cat .circle-ruby) ; do rvm install $i || exit 1 ; done
4
+ - for i in $(cat .circle-ruby) ; do rvm-exec $i bundle install || exit 1 ; done
5
+ script:
6
+ - for i in $(cat .circle-ruby) ; do rvm-exec $i bundle exec rake || exit 1 ; done
7
+ notifications:
8
+ email: false
9
+ slack:
10
+ secure: PQOCIfuacnmF9MMGmZseYwGn8HfxmL1m7qqftoWhDkkp8oKLKVaSfoMPGAADWQsWLBl4JQC+z/lRH8I2gXChQjZhKZBz15bFH6mwFBI82DXidVNVxt27g/uR3RMT8GfGw8CkgW8DsSpNF+E4pBPOKONFLhj9Y0xdpAID7slrPwd6wDdpi4oDXvnfTO4ZfUZbB3OGT0nnzcH4gCiKXKijv4MRzHTVpvbwe+P3TOKkTY0V21B++YSBpX1tIYt6cLOHaDFQT4DScwFajtvynpwWf3PCRMCATganpyEqEpkiUp+dSg1h2WjYilAwVHkLnNaESUFKeTLQGIXpKMj4+3yHlIPPG6M2MawgwhSDuYy1IAE/81+Y06V9Sn9PPnICsjV1+W0LxnCms13t1JcVWrzVOtlzyCInKr8ENAX6Ku6SSQaouuqYghm1maG8ZtNhqyByqGctov7noLUH6T+lHS8ODr22cLg6f0lzVn5d13/aha9OvTZV7DN6uVCfwpbAL9S+u1TNtjrDhJQFohSe7X+jb+KxN7sLZR5Z5RKwM8sx6Tadf3rrvVRF5+jQxpb2IgjakV2QgxmVDrZDu3XXWbRUYMlGbmR4EEwDaKPJsjKh8KIu6GS6rhrQHiwvwDH6FQcXdeQsieLaVTBoKnE1slYvRMVTMZxFkAbI2dIt+H06c7c=
@@ -1,3 +1,23 @@
1
+ # 3.0.1 / 2018-08-19
2
+
3
+ * [BUGFIX] Fix cap used to decide when to use real_streak GitHub polling
4
+
5
+ # 3.0.0 / 2018-07-18
6
+
7
+ * [BUGFIX] Update to work with recent GitHub changes for historic streak lookup API
8
+ * [FEATURE] Historic GitHub streaks now show actual stats instead of `-1` placeholders
9
+ * [FEATURE] It is now possible to convert a datapoint back to its original format with `.to_a`
10
+ * [FEATURE] Added `.start_date` and `.end_date` to Data object
11
+
12
+ # 2.0.0 / 2017-09-29
13
+
14
+ * [BUGFIX] Fail cleanly if Github responds with a bad HTTP code
15
+
16
+ # 1.4.0 / 2017-06-09
17
+
18
+ * [ENHANCEMENT] Cache more data methods
19
+ * [ENHANCEMENT] Upgrade to latest Nokogiri minor release
20
+
1
21
  # 1.3.0 / 2016-09-14
2
22
 
3
23
  * [FEATURE] Re-adds support for streak lookups longer than 366 days from GitHub, now that they've brought back older commit info
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
-
data/README.md CHANGED
@@ -2,8 +2,7 @@ GithubStats
2
2
  =========
3
3
 
4
4
  [![Gem Version](https://img.shields.io/gem/v/githubstats.svg)](https://rubygems.org/gems/githubstats)
5
- [![Dependency Status](https://img.shields.io/gemnasium/akerl/githubstats.svg)](https://gemnasium.com/akerl/githubstats)
6
- [![Build Status](https://img.shields.io/circleci/project/akerl/githubstats.svg)](https://circleci.com/gh/akerl/githubstats)
5
+ [![Build Status](https://img.shields.io/travis/com/akerl/githubstats.svg)](https://travis-ci.com/akerl/githubstats)
7
6
  [![Coverage Status](https://img.shields.io/codecov/c/github/akerl/githubstats.svg)](https://codecov.io/github/akerl/githubstats)
8
7
  [![Code Quality](https://img.shields.io/codacy/d25d2521df3f4a6b8369edd419438d97.svg)](https://www.codacy.com/app/akerl/githubstats)
9
8
  [![MIT Licensed](https://img.shields.io/badge/license-MIT-green.svg)](https://tldrlegal.com/license/mit-license)
data/Rakefile CHANGED
@@ -7,8 +7,7 @@ RSpec::Core::RakeTask.new(:spec)
7
7
 
8
8
  desc 'Run Rubocop on the gem'
9
9
  RuboCop::RakeTask.new(:rubocop) do |task|
10
- task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
11
10
  task.fail_on_error = true
12
11
  end
13
12
 
14
- task default: [:spec, :rubocop, :build, :install]
13
+ task default: %i[spec rubocop build install]
@@ -3,7 +3,7 @@
3
3
  require 'githubstats'
4
4
  require 'optparse'
5
5
 
6
- opt = OptionParser.new do |opts|
6
+ OptionParser.new do |opts|
7
7
  opts.banner = 'Usage: githubstats [-h] [USER]'
8
8
  opts.on_tail('-v', '--version', 'Show version') do
9
9
  puts GithubStats::VERSION
@@ -1,13 +1,14 @@
1
- $:.unshift File.expand_path('../lib/', __FILE__)
1
+ require 'English'
2
+ $LOAD_PATH.unshift File.expand_path('lib', __dir__)
2
3
  require 'githubstats/version'
3
4
 
4
5
  Gem::Specification.new do |s|
5
6
  s.name = 'githubstats'
6
7
  s.version = GithubStats::VERSION
7
- s.date = Time.now.strftime("%Y-%m-%d")
8
+ s.date = Time.now.strftime('%Y-%m-%d')
8
9
 
9
10
  s.summary = 'Present Github contributions stats in a consumable format'
10
- s.description = "Pulls the statistics from Github's user contribution chart and provides an interface for analyzing that data"
11
+ s.description = 'Pulls the statistics from Github\'s user contribution chart and provides an interface for analyzing that data' # rubocop:disable Metrics/LineLength
11
12
  s.authors = ['Les Aker']
12
13
  s.email = 'me@lesaker.org'
13
14
  s.homepage = 'https://github.com/akerl/githubstats'
@@ -17,14 +18,15 @@ Gem::Specification.new do |s|
17
18
  s.test_files = `git ls-files spec/*`.split
18
19
  s.executables = ['githubstats']
19
20
 
20
- s.add_runtime_dependency 'curb', '~> 0.9.0'
21
21
  s.add_runtime_dependency 'basiccache', '~> 1.0.0'
22
- s.add_runtime_dependency 'nokogiri', '~> 1.6.5'
22
+ s.add_runtime_dependency 'curb', '~> 0.9.0'
23
+ s.add_runtime_dependency 'nokogiri', '~> 1.10.8'
23
24
 
24
- s.add_development_dependency 'timecop', '~> 0.8.0'
25
- s.add_development_dependency 'rubocop', '~> 0.42.0'
26
- s.add_development_dependency 'rake', '~> 11.2.0'
27
25
  s.add_development_dependency 'codecov', '~> 0.1.1'
28
- s.add_development_dependency 'rspec', '~> 3.5.0'
29
- s.add_development_dependency 'fuubar', '~> 2.2.0'
26
+ s.add_development_dependency 'fuubar', '~> 2.5.0'
27
+ s.add_development_dependency 'goodcop', '~> 0.8.0'
28
+ s.add_development_dependency 'rake', '~> 13.0.0'
29
+ s.add_development_dependency 'rspec', '~> 3.9.0'
30
+ s.add_development_dependency 'rubocop', '~> 0.76.0'
31
+ s.add_development_dependency 'timecop', '~> 0.9.0'
30
32
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'curb'
3
4
  require 'json'
4
5
  require 'nokogiri'
@@ -33,14 +34,14 @@ module GithubStats
33
34
  ##
34
35
  # Default URL for grabbing data
35
36
 
36
- DEFAULT_URL = "#{DEFAULT_HOST}/users/%s/contributions".freeze
37
+ DEFAULT_URL = "#{DEFAULT_HOST}/users/%s/contributions"
37
38
 
38
39
  ##
39
40
  # User object
40
41
  class User
41
42
  include MethodCacher
42
43
 
43
- attr_reader :name, :url, :data, :last_updated
44
+ attr_reader :name, :url, :last_updated
44
45
 
45
46
  ##
46
47
  # Creates a new user object
@@ -50,8 +51,7 @@ module GithubStats
50
51
  @name = params[:name] || guess_user
51
52
  @url = (params[:url] || DEFAULT_URL) % @name
52
53
  @last_updated = nil
53
- enable_caching [:streak, :longest_streak, :streaks, :real_streak,
54
- :real_streak_start]
54
+ enable_caching %i[streak longest_streak streaks]
55
55
  end
56
56
 
57
57
  ##
@@ -73,7 +73,7 @@ module GithubStats
73
73
 
74
74
  def streaks
75
75
  naive = data.streaks
76
- return naive if naive.last.nil? || naive.last.size < 365
76
+ return naive if naive.last.nil? || naive.last.size < 364
77
77
  [real_streak]
78
78
  end
79
79
 
@@ -81,7 +81,7 @@ module GithubStats
81
81
  # Set a custom longest_streak to account for the overriden streak
82
82
 
83
83
  def longest_streak
84
- return data.longest_streak if data.longest_streak.size < 365
84
+ return data.longest_streak if data.longest_streak.size < 364
85
85
  streak
86
86
  end
87
87
 
@@ -117,40 +117,38 @@ module GithubStats
117
117
 
118
118
  def load_data
119
119
  @data = GithubStats::Data.new download
120
- @last_updated = DateTime.now
120
+ @last_updated = Time.now
121
121
  end
122
122
 
123
123
  ##
124
- # Set a custom longest_streak that takes into account GitHub,
125
- # which reports full length but only gives data for a year
126
-
127
- def real_streak_start(chart_start)
128
- res = GithubStats::Data.new download(chart_start.strftime('%Y-%m-%d'))
129
- last_streak_start = res.streaks.last.first.date
130
- new_chart_start = res.raw.first.date
131
- return last_streak_start unless last_streak_start == new_chart_start
132
- real_streak_start(new_chart_start)
124
+ # Set a custom longest_streak that takes into account GitHub's
125
+ # historical records
126
+
127
+ def real_streak_rewind(partial_streak)
128
+ new_data = download(partial_streak.first.date - 1)
129
+ old_data = partial_streak.map(&:to_a)
130
+ new_stats = GithubStats::Data.new(new_data + old_data)
131
+ partial_streak = new_stats.streaks.last
132
+ return partial_streak if partial_streak.first.date != new_stats.start_date
133
+ real_streak_rewind partial_streak
133
134
  end
134
135
 
135
136
  def real_streak
136
- existing = data.streaks.last
137
- first_date = existing.first.date
138
- extra_size = (first_date - real_streak_start(first_date))
139
- [-1] * extra_size + existing
137
+ @real_streak ||= real_streak_rewind(data.streaks.last)
140
138
  end
141
139
 
142
140
  ##
143
141
  # Downloads new data from Github
144
142
 
145
- def download(from = nil)
146
- url = from ? @url + "?from=#{from}" : @url
147
- svg = Curl::Easy.perform(url).body_str
148
- html = Nokogiri::HTML(svg)
143
+ def download(to_date = nil)
144
+ url = to_date ? @url + "?to=#{to_date.strftime('%Y-%m-%d')}" : @url
145
+ res = Curl::Easy.perform(url)
146
+ code = res.response_code
147
+ raise("Failed loading data from GitHub: #{url} #{code}") if code != 200
148
+ html = Nokogiri::HTML(res.body_str)
149
149
  html.css('.day').map do |x|
150
150
  x.attributes.values_at('data-date', 'data-count').map(&:value)
151
151
  end
152
- rescue
153
- raise 'Unable to load data from Github'
154
152
  end
155
153
 
156
154
  def method_missing(sym, *args, &block)
@@ -12,7 +12,11 @@ module GithubStats
12
12
  ##
13
13
  # Helper struct for defining datapoints
14
14
 
15
- Datapoint = Struct.new(:date, :score)
15
+ Datapoint = Struct.new(:date, :score) do
16
+ def to_a
17
+ [date.strftime('%Y-%m-%d'), score.to_s]
18
+ end
19
+ end
16
20
 
17
21
  ##
18
22
  # Data class for calculations
@@ -30,15 +34,31 @@ module GithubStats
30
34
 
31
35
  def initialize(data)
32
36
  @raw = data.map { |d, s| Datapoint.new(Date.parse(d), s.to_i) }
33
- enable_caching [:to_h, :today, :streaks, :longest_streak, :streak, :max,
34
- :mean, :std_var, :quartile_boundaries, :quartiles]
37
+ enable_caching %i[to_h today streaks longest_streak streak max mean
38
+ std_var quartile_boundaries quartiles start_date
39
+ end_date]
35
40
  end
36
41
 
37
42
  ##
38
43
  # The data as a hash where the keys are dates and values are scores
39
44
 
40
45
  def to_h
41
- @raw.reduce(Hash.new(0)) { |a, e| a.merge(e.date => e.score) }
46
+ @raw.reduce(Hash.new(0)) do |acc, elem|
47
+ acc.merge(elem.date => elem.score)
48
+ end
49
+ end
50
+
51
+ ##
52
+ # The start of the dataset
53
+
54
+ def start_date
55
+ @raw.first.date
56
+ end
57
+
58
+ ##
59
+ # The end of the dataset
60
+ def end_date
61
+ @raw.last.date
42
62
  end
43
63
 
44
64
  ##
@@ -78,7 +98,7 @@ module GithubStats
78
98
 
79
99
  def longest_streak
80
100
  return [] if streaks.empty?
81
- streaks.max { |a, b| a.length <=> b.length }
101
+ streaks.max_by(&:length)
82
102
  end
83
103
 
84
104
  ##
@@ -93,7 +113,7 @@ module GithubStats
93
113
  # The highest scoring day
94
114
 
95
115
  def max
96
- @raw.max { |a, b| a.score <=> b.score }
116
+ @raw.max_by(&:score)
97
117
  end
98
118
 
99
119
  ##
@@ -107,7 +127,9 @@ module GithubStats
107
127
  # The standard variance (two pass)
108
128
 
109
129
  def std_var
110
- first_pass = @raw.reduce(0) { |a, e| (e.score.to_f - mean)**2 + a }
130
+ first_pass = @raw.reduce(0) do |acc, elem|
131
+ (elem.score.to_f - mean)**2 + acc
132
+ end
111
133
  Math.sqrt(first_pass / (@raw.size - 1))
112
134
  end
113
135
 
@@ -124,7 +146,7 @@ module GithubStats
124
146
  # They only consider the first 3 or 1, based on the mean and max of the set
125
147
 
126
148
  def gh_outliers
127
- outliers.take(6 > max.score - mean || 15 > max.score ? 1 : 3)
149
+ outliers.take(max.score - mean < 6 || max.score < 15 ? 1 : 3)
128
150
  end
129
151
 
130
152
  ##
@@ -149,14 +171,16 @@ module GithubStats
149
171
 
150
172
  def quartiles
151
173
  quartiles = Array.new(5) { [] }
152
- @raw.reduce(quartiles) { |a, e| a[quartile(e.score)] << e && a }
174
+ @raw.each_with_object(quartiles) do |elem, acc|
175
+ acc[quartile(elem.score)] << elem
176
+ end
153
177
  end
154
178
 
155
179
  ##
156
180
  # Return the quartile of a given score
157
181
 
158
182
  def quartile(score)
159
- return nil if score < 0 || score > max.score
183
+ return nil if score.negative? || score > max.score
160
184
  quartile_boundaries.count { |bound| score > bound }
161
185
  end
162
186
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  ##
3
4
  # Define the version
4
5
  module GithubStats
5
- VERSION = '1.3.1'.freeze
6
+ VERSION = '3.0.2'
6
7
  end
@@ -7,8 +7,8 @@ describe GithubStats do
7
7
  end
8
8
 
9
9
  it 'defines a Datapoint object' do
10
- a = GithubStats::Datapoint.new(DateTime.now, 4)
11
- expect(a.date).to be_an_instance_of DateTime
10
+ a = GithubStats::Datapoint.new(Time.now, 4)
11
+ expect(a.date).to be_an_instance_of Time
12
12
  expect(a.score).to eql 4
13
13
  end
14
14
 
@@ -39,7 +39,7 @@ describe GithubStats do
39
39
  expect(named_user.last_updated).to be_nil
40
40
  named_user.data
41
41
  expect(named_user.instance_variables).to include(:@data)
42
- expect(named_user.last_updated).to be_an_instance_of DateTime
42
+ expect(named_user.last_updated).to be_an_instance_of Time
43
43
  end
44
44
 
45
45
  it 'raises an exception if it cannot load data' do
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: githubstats
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-16 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: basiccache
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: curb
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -25,117 +39,117 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: 0.9.0
27
41
  - !ruby/object:Gem::Dependency
28
- name: basiccache
42
+ name: nokogiri
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 1.0.0
47
+ version: 1.10.8
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 1.0.0
54
+ version: 1.10.8
41
55
  - !ruby/object:Gem::Dependency
42
- name: nokogiri
56
+ name: codecov
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 1.6.5
48
- type: :runtime
61
+ version: 0.1.1
62
+ type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 1.6.5
68
+ version: 0.1.1
55
69
  - !ruby/object:Gem::Dependency
56
- name: timecop
70
+ name: fuubar
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: 0.8.0
75
+ version: 2.5.0
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 0.8.0
82
+ version: 2.5.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: rubocop
84
+ name: goodcop
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: 0.42.0
89
+ version: 0.8.0
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: 0.42.0
96
+ version: 0.8.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 11.2.0
103
+ version: 13.0.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 11.2.0
110
+ version: 13.0.0
97
111
  - !ruby/object:Gem::Dependency
98
- name: codecov
112
+ name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.1.1
117
+ version: 3.9.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.1.1
124
+ version: 3.9.0
111
125
  - !ruby/object:Gem::Dependency
112
- name: rspec
126
+ name: rubocop
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 3.5.0
131
+ version: 0.76.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 3.5.0
138
+ version: 0.76.0
125
139
  - !ruby/object:Gem::Dependency
126
- name: fuubar
140
+ name: timecop
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: 2.2.0
145
+ version: 0.9.0
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: 2.2.0
152
+ version: 0.9.0
139
153
  description: Pulls the statistics from Github's user contribution chart and provides
140
154
  an interface for analyzing that data
141
155
  email: me@lesaker.org
@@ -149,13 +163,13 @@ files:
149
163
  - ".prospectus"
150
164
  - ".rspec"
151
165
  - ".rubocop.yml"
166
+ - ".travis.yml"
152
167
  - CHANGELOG.md
153
168
  - Gemfile
154
169
  - LICENSE
155
170
  - README.md
156
171
  - Rakefile
157
172
  - bin/githubstats
158
- - circle.yml
159
173
  - githubstats.gemspec
160
174
  - lib/githubstats.rb
161
175
  - lib/githubstats/data.rb
@@ -175,7 +189,7 @@ homepage: https://github.com/akerl/githubstats
175
189
  licenses:
176
190
  - MIT
177
191
  metadata: {}
178
- post_install_message:
192
+ post_install_message:
179
193
  rdoc_options: []
180
194
  require_paths:
181
195
  - lib
@@ -190,9 +204,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
204
  - !ruby/object:Gem::Version
191
205
  version: '0'
192
206
  requirements: []
193
- rubyforge_project:
194
- rubygems_version: 2.5.1
195
- signing_key:
207
+ rubygems_version: 3.1.2
208
+ signing_key:
196
209
  specification_version: 4
197
210
  summary: Present Github contributions stats in a consumable format
198
211
  test_files:
data/circle.yml DELETED
@@ -1,6 +0,0 @@
1
- dependencies:
2
- override:
3
- - 'for i in $(cat .circle-ruby) ; do rvm-exec $i bundle install || exit 1 ; done'
4
- test:
5
- override:
6
- - 'for i in $(cat .circle-ruby) ; do rvm-exec $i bundle exec rake || exit 1 ; done'