githubstats 1.3.1 → 3.0.2

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