github_contributions 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +56 -0
- data/Rakefile +19 -0
- data/bin/github_contributions +5 -0
- data/github_contributions.gemspec +30 -0
- data/lib/github_contributions/contribution_grouper.rb +24 -0
- data/lib/github_contributions/errors.rb +7 -0
- data/lib/github_contributions/event.rb +32 -0
- data/lib/github_contributions/events/issue_comment_event.rb +19 -0
- data/lib/github_contributions/events/issues_event.rb +13 -0
- data/lib/github_contributions/events/pull_request_event.rb +13 -0
- data/lib/github_contributions/events/pull_request_review_comment_event.rb +17 -0
- data/lib/github_contributions/events/pull_request_review_event.rb +17 -0
- data/lib/github_contributions/github_object.rb +24 -0
- data/lib/github_contributions/github_objects/comment.rb +6 -0
- data/lib/github_contributions/github_objects/issue.rb +6 -0
- data/lib/github_contributions/github_objects/pull_request.rb +6 -0
- data/lib/github_contributions/github_objects/review.rb +6 -0
- data/lib/github_contributions/github_objects/user.rb +10 -0
- data/lib/github_contributions/markdown_presenter.rb +30 -0
- data/lib/github_contributions/option_handler.rb +45 -0
- data/lib/github_contributions/version.rb +3 -0
- data/lib/github_contributions.rb +53 -0
- data/pkg/github_contributions-0.1.0.gem +0 -0
- metadata +152 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c0d33817df8b9fe32cc09fc6ec8d9a390d976ddaceb4a6aaca9c2697f1a9ba59
|
4
|
+
data.tar.gz: a4f89cd9967862b119a203d2e92e7c779a99d4eee96b82de6854d0b706b41359
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 700395833c364f7c5e721f86793f7c9db4e64d31f41e9b374435a25a22686b005150dfb776161a958946db60aaeb1a84b7e0042ad9849cc243223424b9c84311
|
7
|
+
data.tar.gz: 0b615dfae4dbe0868e18f21c3aabd694e8ce52a51e6e1e56750c895099f9afae1ffee994ad7f119053c2f07206baa72b3cfe0ae7e618bfb453db7a47626a159f
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2022 Kevin Jalbert
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# GitHub Contributions
|
2
|
+
|
3
|
+
> Ever wanted to know where you (or someone else) are making contributions on GitHub?
|
4
|
+
|
5
|
+
Your GitHub profile shows you the [Contributions Calendar](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/viewing-contributions-on-your-profile#contributions-calendar) and [Contribution activity](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/viewing-contributions-on-your-profile#contribution-activity), which both provide great visualizations and details covering contributions of the following:
|
6
|
+
|
7
|
+
- creating/closing issues
|
8
|
+
- creating/closing/merging/reviewing pull requests
|
9
|
+
- creating repositories
|
10
|
+
- authoring commits on the main branch of repositories
|
11
|
+
- starting/answering discussions
|
12
|
+
|
13
|
+
I personally wanted to track comments on issues and pull requests as I felt they were a good indication of contributions. It sometimes isn't uncommon for a lot of discussions to happen on issues or even a pull request.
|
14
|
+
|
15
|
+
I am a fan of [Obsidian](https://obsidian.md/) right now to track my day at work. Recording these contributions in GitHub makes it simple to recall what I did in previous days/weeks. This is even more important if you have a [_BragDoc_](https://jvns.ca/blog/brag-documents/). As Obsidian uses Markdown, that is the primary format that this tool is built for.
|
16
|
+
|
17
|
+
## Install
|
18
|
+
|
19
|
+
```bash
|
20
|
+
gem install github_contributions
|
21
|
+
```
|
22
|
+
|
23
|
+
You need a GitHub Personal Access Token in your ENVs as `GITHUB_ACCESS_TOKEN` for this gem to work.
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
```bash
|
28
|
+
# Show me contributions for 'kevinjalbert' for today
|
29
|
+
github_contributions -a "kevinjalbert"
|
30
|
+
|
31
|
+
# Show me contributions for 'kevinjalbert' for today only in the 'shopify' org
|
32
|
+
github_contributions -a "kevinjalbert" -o "shopify"
|
33
|
+
|
34
|
+
# Show me contributions for 'kevinjalbert' in the last week
|
35
|
+
github_contributions -a "kevinjalbert" -s "last week"
|
36
|
+
|
37
|
+
# Show me contributions for 'kevinjalbert' for the week before last
|
38
|
+
github_contributions -a "kevinjalbert" -s "two weeks ago" -e "one week ago"
|
39
|
+
|
40
|
+
# Show me contributions for 'kevinjalbert' for only yesterday
|
41
|
+
github_contributions -a "kevinjalbert" -s "yesterday" -e "yesterday"
|
42
|
+
|
43
|
+
# Help
|
44
|
+
github_contributions -h
|
45
|
+
```
|
46
|
+
|
47
|
+
Contributions are grouped by their pull request or issue in order of creation time. This ends up producing a rather detailed list of where contributions were made in the specified time frame. Links are present to easily allow you to jump directly to the contribution. Everything is displayed in Markdown, ready to be copy/pasted where desired. The following is an example of what the output looks like:
|
48
|
+
|
49
|
+
- [Support function in `message` expectation in `t.throws` / `t.throwsAsync`](https://github.com/avajs/ava/issues/2978) by [sindresorhus](https://github.com/sindresorhus)
|
50
|
+
- [Issue Opened at 2022-02-26 08:42:19 UTC](https://github.com/avajs/ava/issues/2978)
|
51
|
+
- [IssueComment Created at 2022-02-26 08:43:12 UTC](https://github.com/avajs/ava/issues/2978#issuecomment-1051842838)
|
52
|
+
- [Use `for..of` loop](https://github.com/sindresorhus/string-width/pull/40) by [fisker](https://github.com/fisker)
|
53
|
+
- [PullRequestReviewComment Created at 2022-02-28 08:18:52 UTC](https://github.com/sindresorhus/string-width/pull/40#discussion_r815662489)
|
54
|
+
- [PullRequestReview Created at 2022-02-28 08:18:52 UTC](https://github.com/sindresorhus/string-width/pull/40#pullrequestreview-894766255)
|
55
|
+
- [PullRequest Closed at 2022-02-28 08:20:12 UTC](https://github.com/sindresorhus/string-width/pull/40)
|
56
|
+
- [IssueComment Created at 2022-02-28 08:20:16 UTC](https://github.com/sindresorhus/string-width/pull/40#issuecomment-1054001902)
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
desc <<~TEXT
|
4
|
+
Task to run the gem during developing.
|
5
|
+
|
6
|
+
This doesn't require the gem to be installed.
|
7
|
+
|
8
|
+
rake dev [options]
|
9
|
+
rake dev -a "kevinjalbert" -s "last week"
|
10
|
+
TEXT
|
11
|
+
task :dev do
|
12
|
+
require "pry"
|
13
|
+
require "./lib/github_contributions"
|
14
|
+
|
15
|
+
GithubContributions.run(ARGV[1..-1])
|
16
|
+
|
17
|
+
# Needed, or rake will try to continue and 'parse' tasks from the args
|
18
|
+
exit
|
19
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "github_contributions/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "github_contributions"
|
8
|
+
spec.version = GithubContributions::VERSION
|
9
|
+
spec.authors = ["Kevin Jalbert"]
|
10
|
+
spec.email = ["kevin.j.jalbert@gmail.com"]
|
11
|
+
spec.summary = "Gem that provides can fetch your GitHub contributions and output them"
|
12
|
+
spec.description = "Gem that provides can fetch your GitHub contributions and output them"
|
13
|
+
spec.homepage = "https://github.com/kevinjalbert/github_contributions"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = Dir["**/*"]
|
17
|
+
spec.test_files = Dir["{test,spec,features}/**/*"]
|
18
|
+
spec.executables = Dir["bin/*"].map { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "bundler", ">= 2.3"
|
22
|
+
spec.add_dependency "chronic", ">= 0.10"
|
23
|
+
spec.add_dependency "octokit", ">= 4.22"
|
24
|
+
spec.add_dependency "hashie", ">= 5.0"
|
25
|
+
spec.add_dependency "activesupport", ">= 7.0"
|
26
|
+
|
27
|
+
spec.add_development_dependency "rake", ">= 13.0"
|
28
|
+
|
29
|
+
spec.required_ruby_version = ">= 2.7"
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module ContributionGrouper
|
3
|
+
class << self
|
4
|
+
# @param events [Event]
|
5
|
+
# @return Hash<GithubObject, [Event]>
|
6
|
+
def by_issue_or_pull_request(events)
|
7
|
+
grouped_events = {}
|
8
|
+
|
9
|
+
events.each do |event|
|
10
|
+
if event.respond_to?(:pull_request)
|
11
|
+
grouped_events[event.pull_request] = [] unless grouped_events.key?(event.pull_request)
|
12
|
+
grouped_events[event.pull_request] << event
|
13
|
+
end
|
14
|
+
if event.respond_to?(:issue)
|
15
|
+
grouped_events[event.issue] = [] unless grouped_events.key?(event.issue)
|
16
|
+
grouped_events[event.issue] << event
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
grouped_events
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
class Exception < StandardError; end
|
3
|
+
class MissingAuthor < GithubContributions::Exception; end
|
4
|
+
class MissingGithubAcessToken < GithubContributions::Exception; end
|
5
|
+
class TimeParseError < GithubContributions::Exception; end
|
6
|
+
class StartDateOutOfRange < GithubContributions::Exception; end
|
7
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
class Event
|
3
|
+
attr_reader :data
|
4
|
+
|
5
|
+
def initialize(data)
|
6
|
+
@data = data
|
7
|
+
end
|
8
|
+
|
9
|
+
def payload
|
10
|
+
end
|
11
|
+
|
12
|
+
def org
|
13
|
+
data.org&.login
|
14
|
+
end
|
15
|
+
|
16
|
+
def actor
|
17
|
+
GithubObjects::User.new(data.actor)
|
18
|
+
end
|
19
|
+
|
20
|
+
def created_at
|
21
|
+
data.created_at
|
22
|
+
end
|
23
|
+
|
24
|
+
def action
|
25
|
+
data.payload.action.titleize
|
26
|
+
end
|
27
|
+
|
28
|
+
def name
|
29
|
+
self.class.name.demodulize.sub("Event", "").singularize
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module Events
|
3
|
+
class IssueCommentEvent < Event
|
4
|
+
def payload
|
5
|
+
comment
|
6
|
+
end
|
7
|
+
|
8
|
+
def comment
|
9
|
+
@comment ||= GithubObjects::Comment.new(data.payload.comment)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Note a pull request comment is classifed as an 'issue' although there is
|
13
|
+
# a `pull_request` attribute in the payload that could be used to id one
|
14
|
+
def issue
|
15
|
+
@issue ||= GithubObjects::Issue.new(data.payload.issue)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module Events
|
3
|
+
class PullRequestReviewCommentEvent < Event
|
4
|
+
def payload
|
5
|
+
comment
|
6
|
+
end
|
7
|
+
|
8
|
+
def comment
|
9
|
+
@comment ||= GithubObjects::Comment.new(data.payload.comment)
|
10
|
+
end
|
11
|
+
|
12
|
+
def pull_request
|
13
|
+
@pull_request ||= GithubObjects::PullRequest.new(data.payload.pull_request)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module Events
|
3
|
+
class PullRequestReviewEvent < Event
|
4
|
+
def payload
|
5
|
+
review
|
6
|
+
end
|
7
|
+
|
8
|
+
def review
|
9
|
+
@review ||= GithubObjects::Review.new(data.payload.review)
|
10
|
+
end
|
11
|
+
|
12
|
+
def pull_request
|
13
|
+
@pull_request ||= GithubObjects::PullRequest.new(data.payload.pull_request)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
# call these payloads?
|
3
|
+
class GithubObject
|
4
|
+
attr_reader :data
|
5
|
+
|
6
|
+
def initialize(data)
|
7
|
+
@data = data
|
8
|
+
end
|
9
|
+
|
10
|
+
def user
|
11
|
+
GithubObjects::User.new(data.user)
|
12
|
+
end
|
13
|
+
|
14
|
+
# ContributionGrouper uses these objects as keys in a hash
|
15
|
+
# We need to define the `hash` and `eql?` so they work correctly
|
16
|
+
def eql?(other)
|
17
|
+
hash == other.hash
|
18
|
+
end
|
19
|
+
|
20
|
+
def hash
|
21
|
+
data.html_url.hash
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module MarkdownPresenter
|
3
|
+
class << self
|
4
|
+
# @param grouped_events Hash<GithubObject, [Event]>
|
5
|
+
def output(grouped_events)
|
6
|
+
puts title
|
7
|
+
grouped_events.each_pair do |issue, events|
|
8
|
+
puts issue_or_pull_request(issue)
|
9
|
+
events.each do |event|
|
10
|
+
puts event(event)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def title
|
18
|
+
"# GitHub Contributions"
|
19
|
+
end
|
20
|
+
|
21
|
+
def issue_or_pull_request(issue)
|
22
|
+
"- [#{issue.data.title.strip}](#{issue.data.html_url}) by [#{issue.user.data.login}](#{issue.user.data.html_url})"
|
23
|
+
end
|
24
|
+
|
25
|
+
def event(event)
|
26
|
+
" - [#{event.name} #{event.action} at #{event.created_at}](#{event.payload.data.html_url})"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module GithubContributions
|
2
|
+
module OptionHandler
|
3
|
+
def self.parse_options(args)
|
4
|
+
options = OpenStruct.new(
|
5
|
+
author: nil,
|
6
|
+
org: nil,
|
7
|
+
start_date: Time.current.at_beginning_of_day,
|
8
|
+
end_date: Time.current.at_end_of_day
|
9
|
+
)
|
10
|
+
|
11
|
+
OptionParser.new do |opts|
|
12
|
+
opts.banner = <<~TEXT
|
13
|
+
Usage: github_contributions [options]
|
14
|
+
You need a GitHub Personal Access Token in your ENVs as GITHUB_ACCESS_TOKEN for this to work.
|
15
|
+
Dates are specified using natual language (via chronic gem).
|
16
|
+
The GitHub's Events API only returns the last 300 events, and the filtering is client-side.
|
17
|
+
TEXT
|
18
|
+
opts.version = VERSION
|
19
|
+
opts.on "-a", "--author STRING", String, "The author of the contributions" do |value|
|
20
|
+
options.author = value
|
21
|
+
end
|
22
|
+
opts.on "-o", "--org STRING", String, "Filter contributions by the organization they belong in (optional)" do |value|
|
23
|
+
options.org = value
|
24
|
+
end
|
25
|
+
opts.on "-s", "--start_date STRING", String, "Filter contributions to be after the beginning of the specified day (defaults to today)" do |value|
|
26
|
+
options.start_date = Chronic.parse(value)&.at_beginning_of_day
|
27
|
+
end
|
28
|
+
opts.on "-e", "--end_date STRING", String, "Filter contributions to be before the end of the specified day (defaults to today)" do |value|
|
29
|
+
options.end_date = Chronic.parse(value)&.at_end_of_day
|
30
|
+
end
|
31
|
+
end.parse!
|
32
|
+
|
33
|
+
raise(TimeParseError, "The end date could not be properly parsed") if options.end_date.nil?
|
34
|
+
raise(TimeParseError, "The start date could not be properly parsed") if options.start_date.nil?
|
35
|
+
raise(StartDateOutOfRange, "The start date must be within 90 day from today") unless options.start_date.between?(90.days.ago, Time.current.at_end_of_day)
|
36
|
+
raise(MissingAuthor, "No author was supplied in arguments (use -a <author>)") if options.author.blank?
|
37
|
+
raise(MissingGithubAcessToken, "GitHub Personal Access Token was not found (should be an ENV as GITHUB_ACCESS_TOKEN") if ENV["GITHUB_ACCESS_TOKEN"].nil?
|
38
|
+
|
39
|
+
options
|
40
|
+
rescue GithubContributions::Exception => e
|
41
|
+
puts e.message
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "active_support/all"
|
2
|
+
require "chronic"
|
3
|
+
require "ostruct"
|
4
|
+
require "optparse"
|
5
|
+
require "octokit"
|
6
|
+
require "hashie"
|
7
|
+
require "digest"
|
8
|
+
|
9
|
+
Dir.glob(File.dirname(__FILE__) + '/github_contributions/**/*.rb') { |file| require file }
|
10
|
+
|
11
|
+
module GithubContributions
|
12
|
+
class << self
|
13
|
+
def run(args)
|
14
|
+
options = OptionHandler.parse_options(args)
|
15
|
+
|
16
|
+
puts "Searching between #{options.start_date.to_formatted_s(:long_ordinal)} and #{options.end_date.to_formatted_s(:long_ordinal)}..."
|
17
|
+
|
18
|
+
client = Octokit::Client.new(access_token: ENV["GITHUB_ACCESS_TOKEN"])
|
19
|
+
client.auto_paginate = true
|
20
|
+
|
21
|
+
results = client.user_events(options.author)
|
22
|
+
|
23
|
+
contribution_count = results.size
|
24
|
+
filtered_contribution_count = 0
|
25
|
+
events = results.map do |result|
|
26
|
+
result.include(Hashie::Mash)
|
27
|
+
|
28
|
+
begin
|
29
|
+
event = "GithubContributions::Events::#{result.type}".constantize.new(result)
|
30
|
+
rescue
|
31
|
+
# TODO: I'd want this one, just don't have an example of it yet
|
32
|
+
# binding.pry if result.type == "CommitCommentEvent"
|
33
|
+
next
|
34
|
+
end
|
35
|
+
|
36
|
+
next unless event.created_at.between?(options.start_date, options.end_date)
|
37
|
+
|
38
|
+
if options.org
|
39
|
+
next unless event.org == options.org
|
40
|
+
end
|
41
|
+
|
42
|
+
filtered_contribution_count += 1
|
43
|
+
event
|
44
|
+
end.compact.reverse
|
45
|
+
|
46
|
+
puts "Found #{filtered_contribution_count}/#{contribution_count} contributions using search filters"
|
47
|
+
puts ""
|
48
|
+
|
49
|
+
grouped_events = ContributionGrouper.by_issue_or_pull_request(events)
|
50
|
+
MarkdownPresenter.output(grouped_events)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: github_contributions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin Jalbert
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-03-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: chronic
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.10'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: octokit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.22'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.22'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: hashie
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '7.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '7.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '13.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '13.0'
|
97
|
+
description: Gem that provides can fetch your GitHub contributions and output them
|
98
|
+
email:
|
99
|
+
- kevin.j.jalbert@gmail.com
|
100
|
+
executables:
|
101
|
+
- github_contributions
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- LICENSE
|
106
|
+
- README.md
|
107
|
+
- Rakefile
|
108
|
+
- bin/github_contributions
|
109
|
+
- github_contributions.gemspec
|
110
|
+
- lib/github_contributions.rb
|
111
|
+
- lib/github_contributions/contribution_grouper.rb
|
112
|
+
- lib/github_contributions/errors.rb
|
113
|
+
- lib/github_contributions/event.rb
|
114
|
+
- lib/github_contributions/events/issue_comment_event.rb
|
115
|
+
- lib/github_contributions/events/issues_event.rb
|
116
|
+
- lib/github_contributions/events/pull_request_event.rb
|
117
|
+
- lib/github_contributions/events/pull_request_review_comment_event.rb
|
118
|
+
- lib/github_contributions/events/pull_request_review_event.rb
|
119
|
+
- lib/github_contributions/github_object.rb
|
120
|
+
- lib/github_contributions/github_objects/comment.rb
|
121
|
+
- lib/github_contributions/github_objects/issue.rb
|
122
|
+
- lib/github_contributions/github_objects/pull_request.rb
|
123
|
+
- lib/github_contributions/github_objects/review.rb
|
124
|
+
- lib/github_contributions/github_objects/user.rb
|
125
|
+
- lib/github_contributions/markdown_presenter.rb
|
126
|
+
- lib/github_contributions/option_handler.rb
|
127
|
+
- lib/github_contributions/version.rb
|
128
|
+
- pkg/github_contributions-0.1.0.gem
|
129
|
+
homepage: https://github.com/kevinjalbert/github_contributions
|
130
|
+
licenses:
|
131
|
+
- MIT
|
132
|
+
metadata: {}
|
133
|
+
post_install_message:
|
134
|
+
rdoc_options: []
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '2.7'
|
142
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
requirements: []
|
148
|
+
rubygems_version: 3.3.3
|
149
|
+
signing_key:
|
150
|
+
specification_version: 4
|
151
|
+
summary: Gem that provides can fetch your GitHub contributions and output them
|
152
|
+
test_files: []
|