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 +5 -5
- data/.circle-ruby +4 -3
- data/.prospectus +8 -8
- data/.rubocop.yml +5 -2
- data/.travis.yml +10 -0
- data/CHANGELOG.md +20 -0
- data/Gemfile +0 -1
- data/README.md +1 -2
- data/Rakefile +1 -2
- data/bin/githubstats +1 -1
- data/githubstats.gemspec +12 -10
- data/lib/githubstats.rb +24 -26
- data/lib/githubstats/data.rb +34 -10
- data/lib/githubstats/version.rb +2 -1
- data/spec/githubstats/data_spec.rb +2 -2
- data/spec/githubstats_spec.rb +1 -1
- metadata +45 -32
- data/circle.yml +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: cbc52fb43a7ea21f49af181e9fceac0aaa61953ee1d2891029ba0678cdc50e38
|
|
4
|
+
data.tar.gz: 91cb1ba5ca68c13dd6b451ed20c1bf1d484fa52633b76c4ab8ef11c045bc98ce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3ff5c12de669ffdc4ef973d7301a513364a56ac41e923bf41e7d77a029c63240709363de30ca43d684d9fd13ebd72e67222c7e16a45d62e9dd1497dc9332909e
|
|
7
|
+
data.tar.gz: 0ca40694b1d8f656697128a9b2b49a3f3a796eb68e4226e9e8bc57cb83b46cdf70edfc5d0562950d9f114f76058a2be789f4f9a90746cb6eb64d5cde3586587a
|
data/.circle-ruby
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
2.
|
|
2
|
-
2.
|
|
3
|
-
2.
|
|
1
|
+
2.6.1
|
|
2
|
+
2.5.3
|
|
3
|
+
2.4.5
|
|
4
|
+
2.3.8
|
data/.prospectus
CHANGED
|
@@ -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
|
-
|
|
3
|
-
static
|
|
4
|
-
set 'green'
|
|
5
|
-
end
|
|
7
|
+
noop
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
slug 'akerl/githubstats'
|
|
10
|
-
end
|
|
9
|
+
extend ProspectusGems::Gemspec.new
|
|
10
|
+
extend ProspectusTravis::Build.new(my_slug)
|
|
11
11
|
end
|
data/.rubocop.yml
CHANGED
data/.travis.yml
ADDED
|
@@ -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=
|
data/CHANGELOG.md
CHANGED
|
@@ -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
data/README.md
CHANGED
|
@@ -2,8 +2,7 @@ GithubStats
|
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
4
|
[](https://rubygems.org/gems/githubstats)
|
|
5
|
-
[](https://circleci.com/gh/akerl/githubstats)
|
|
5
|
+
[](https://travis-ci.com/akerl/githubstats)
|
|
7
6
|
[](https://codecov.io/github/akerl/githubstats)
|
|
8
7
|
[](https://www.codacy.com/app/akerl/githubstats)
|
|
9
8
|
[](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: [
|
|
13
|
+
task default: %i[spec rubocop build install]
|
data/bin/githubstats
CHANGED
data/githubstats.gemspec
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
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(
|
|
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 =
|
|
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 '
|
|
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 '
|
|
29
|
-
s.add_development_dependency '
|
|
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
|
data/lib/githubstats.rb
CHANGED
|
@@ -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"
|
|
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, :
|
|
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 [
|
|
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 <
|
|
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 <
|
|
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 =
|
|
120
|
+
@last_updated = Time.now
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
##
|
|
124
|
-
# Set a custom longest_streak that takes into account GitHub
|
|
125
|
-
#
|
|
126
|
-
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
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(
|
|
146
|
-
url =
|
|
147
|
-
|
|
148
|
-
|
|
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)
|
data/lib/githubstats/data.rb
CHANGED
|
@@ -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 [
|
|
34
|
-
|
|
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))
|
|
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.
|
|
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.
|
|
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)
|
|
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(
|
|
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.
|
|
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
|
|
183
|
+
return nil if score.negative? || score > max.score
|
|
160
184
|
quartile_boundaries.count { |bound| score > bound }
|
|
161
185
|
end
|
|
162
186
|
|
data/lib/githubstats/version.rb
CHANGED
|
@@ -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(
|
|
11
|
-
expect(a.date).to be_an_instance_of
|
|
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
|
|
data/spec/githubstats_spec.rb
CHANGED
|
@@ -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
|
|
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:
|
|
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:
|
|
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:
|
|
42
|
+
name: nokogiri
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
45
|
- - "~>"
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.
|
|
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.
|
|
54
|
+
version: 1.10.8
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
56
|
+
name: codecov
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
59
|
- - "~>"
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.
|
|
48
|
-
type: :
|
|
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.
|
|
68
|
+
version: 0.1.1
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
70
|
+
name: fuubar
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
73
|
- - "~>"
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
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:
|
|
82
|
+
version: 2.5.0
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
84
|
+
name: goodcop
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
87
|
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 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.
|
|
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:
|
|
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:
|
|
110
|
+
version: 13.0.0
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
112
|
+
name: rspec
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
115
|
- - "~>"
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
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:
|
|
124
|
+
version: 3.9.0
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
126
|
+
name: rubocop
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
129
|
- - "~>"
|
|
116
130
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
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:
|
|
138
|
+
version: 0.76.0
|
|
125
139
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
140
|
+
name: timecop
|
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
|
128
142
|
requirements:
|
|
129
143
|
- - "~>"
|
|
130
144
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
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:
|
|
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
|
-
|
|
194
|
-
|
|
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:
|