hubload 0.1.0
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.
- data/LICENSE +20 -0
- data/README.rdoc +76 -0
- data/Rakefile +21 -0
- data/VERSION +1 -0
- data/lib/hubload.rb +35 -0
- data/lib/hubload/after.rb +9 -0
- data/lib/hubload/before.rb +9 -0
- data/lib/hubload/commit.rb +49 -0
- data/lib/hubload/ref.rb +9 -0
- data/lib/hubload/repo.rb +39 -0
- data/spec/hubload_spec.rb +174 -0
- data/spec/spec_helper.rb +9 -0
- metadata +68 -0
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Hunter Gillane
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
= Hubload
|
2
|
+
Parses post-receive payloads from GitHub
|
3
|
+
|
4
|
+
== Install
|
5
|
+
|
6
|
+
One day I will get around to packaging this up as a gem. For now, I guess you can just clone it.
|
7
|
+
|
8
|
+
== Usage
|
9
|
+
|
10
|
+
To use a post-receive hook for your repo, you'll need to go into the admin section (or ask someone that has access to it) and click on Post-Receive URLs. See http://help.github.com/post-receive-hooks/ for more on setting one up.
|
11
|
+
|
12
|
+
Largely, this just parses and wraps the values sent from GitHub. However, it adds a couple convenience methods as well for formatting and more intuitive naming( ie - private? method for a repo, etc).
|
13
|
+
|
14
|
+
When any commits are pushed to that repo, GitHub will wrap up the commit info in a JSON payload and POST it to the URL you specify. At your post-receive URL, you'll then be able to parse the payload:
|
15
|
+
|
16
|
+
@parsed_load = Hubload.new(params[:payload])
|
17
|
+
|
18
|
+
This will give you a Hubload object, which has references to the commits details, namely: before, after, ref, repo, and commits.
|
19
|
+
|
20
|
+
=== Ref
|
21
|
+
ref = @parsed_load.ref # => Hubload::Ref object
|
22
|
+
ref.value # => 'refs/heads/master' (or whatever branch)
|
23
|
+
|
24
|
+
|
25
|
+
=== After / Before
|
26
|
+
|
27
|
+
before = @parsed_load.before # => Hubload::After object
|
28
|
+
before.value # => 027fa2043b65e7d4092ba310966980db5d36a265
|
29
|
+
|
30
|
+
after = @parsed_load.after # => Hubload::After object
|
31
|
+
after.value # => 027fa2043b65e7d4092ba310966980db5d36a264
|
32
|
+
|
33
|
+
=== Repo
|
34
|
+
|
35
|
+
You also get info about the commit's repo
|
36
|
+
|
37
|
+
repo = @parsed_load.repo # => Hubload::Repo object
|
38
|
+
|
39
|
+
Check out the source for all the info provided by Hubload::Repo. A few examples:
|
40
|
+
|
41
|
+
repo.fork? # => false
|
42
|
+
repo.publicly_visible? # => true
|
43
|
+
repo.owner # => Hunter Gillane
|
44
|
+
|
45
|
+
=== Commits
|
46
|
+
GitHub's post-receive payload can potentially more than one commit. For that reason you'll get an array of commits in the payload.
|
47
|
+
|
48
|
+
commits = @parsed_load.commits # => Hubload::Commit []
|
49
|
+
|
50
|
+
Here are some of the methods available for a single commit:
|
51
|
+
|
52
|
+
commit_1 = commits[0]
|
53
|
+
commit_1.pretty_time # => "07:48 PM"
|
54
|
+
commit_1.pretty_date # => "Jan 1, 2010"
|
55
|
+
commit_1.message => "added some stuff"
|
56
|
+
|
57
|
+
etc.
|
58
|
+
|
59
|
+
== One More Thing
|
60
|
+
|
61
|
+
Enjoy!
|
62
|
+
|
63
|
+
|
64
|
+
== Note on Patches/Pull Requests
|
65
|
+
|
66
|
+
* Fork the project.
|
67
|
+
* Make your feature addition or bug fix.
|
68
|
+
* Add tests for it. This is important so I don't break it in a
|
69
|
+
future version unintentionally.
|
70
|
+
* Commit, do not mess with rakefile, version, or history.
|
71
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
72
|
+
* Send me a pull request. Bonus points for topic branches.
|
73
|
+
|
74
|
+
== Copyright
|
75
|
+
|
76
|
+
Copyright (c) 2010 Hunter Gillane. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'spec/rake/spectask'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gemspec|
|
7
|
+
gemspec.name = "hubload"
|
8
|
+
gemspec.summary = "Parses post-receive payloads from GitHub"
|
9
|
+
gemspec.description = "Parses post-receive payloads from GitHub"
|
10
|
+
gemspec.email = "hunter.gillane@gmail.com"
|
11
|
+
gemspec.homepage = "http://github.com/pinecon3/hubload"
|
12
|
+
gemspec.authors = ["Hunter Gillane"]
|
13
|
+
end
|
14
|
+
Jeweler::GemcutterTasks.new
|
15
|
+
rescue LoadError
|
16
|
+
puts "Jeweler not available. Install it with: gem install jeweler"
|
17
|
+
end
|
18
|
+
|
19
|
+
Spec::Rake::SpecTask.new do |t|
|
20
|
+
t.spec_opts = ["--color"]
|
21
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/hubload.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'json'
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
dir = Pathname(__FILE__).dirname.expand_path
|
6
|
+
|
7
|
+
class Hubload
|
8
|
+
|
9
|
+
attr_accessor :ref, :before, :after, :repo, :commits
|
10
|
+
|
11
|
+
def initialize(payload)
|
12
|
+
load_data = JSON.parse(payload)
|
13
|
+
@ref = Hubload::Ref.new(load_data['ref'])
|
14
|
+
@before = Hubload::Before.new(load_data['before'])
|
15
|
+
@after = Hubload::After.new(load_data['after'])
|
16
|
+
@repo = Hubload::Repo.new(load_data['repository'])
|
17
|
+
@commits = parse_commits(load_data['commits'])
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_commits(commits)
|
21
|
+
payload_commits = []
|
22
|
+
commits.each do |c|
|
23
|
+
payload_commits << Commit.new(c)
|
24
|
+
end
|
25
|
+
payload_commits
|
26
|
+
end
|
27
|
+
|
28
|
+
private :parse_commits
|
29
|
+
end
|
30
|
+
|
31
|
+
require dir + 'hubload/ref'
|
32
|
+
require dir + 'hubload/before'
|
33
|
+
require dir + 'hubload/after'
|
34
|
+
require dir + 'hubload/repo'
|
35
|
+
require dir + 'hubload/commit'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
class Hubload
|
4
|
+
class Commit
|
5
|
+
|
6
|
+
attr_accessor :message, :commit_id, :timestamp, :url, :author, :modified_files,
|
7
|
+
:removed_files, :added_files
|
8
|
+
|
9
|
+
def initialize(commit)
|
10
|
+
@message = commit['message']
|
11
|
+
@commit_id = commit['id']
|
12
|
+
@timestamp = commit['timestamp']
|
13
|
+
@url = commit['url']
|
14
|
+
@author = Hubload::Commit::Author.new(commit['author']['name'],
|
15
|
+
commit['author']['email'])
|
16
|
+
@modified_files = commit['modified']
|
17
|
+
@removed_files = commit['removed']
|
18
|
+
@added_files = commit['added']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns the commit's time in a nice format and normalizes
|
22
|
+
# AM and PM times
|
23
|
+
#
|
24
|
+
def pretty_time
|
25
|
+
time = Time.parse(@timestamp)
|
26
|
+
if time.hour > 12
|
27
|
+
(time - 43200).strftime("%H:%M") << " PM"
|
28
|
+
else
|
29
|
+
time.strftime("%H:%M") << " AM"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns the commit's date in a nice format
|
34
|
+
# Month Day, Year
|
35
|
+
def pretty_date
|
36
|
+
Date.parse(@timestamp).strftime("%b%e, %Y")
|
37
|
+
end
|
38
|
+
|
39
|
+
class Author
|
40
|
+
|
41
|
+
attr_accessor :email, :name
|
42
|
+
|
43
|
+
def initialize(name, email)
|
44
|
+
@name = name
|
45
|
+
@email = email
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/hubload/ref.rb
ADDED
data/lib/hubload/repo.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
class Hubload
|
2
|
+
class Repo
|
3
|
+
|
4
|
+
attr_accessor :forks, :description, :watchers, :open_issues, :url, :fork,
|
5
|
+
:publicly_visible, :homepage, :owner, :name
|
6
|
+
|
7
|
+
def initialize(repo)
|
8
|
+
@forks = repo['forks']
|
9
|
+
@description = repo['description']
|
10
|
+
@watchers = repo['watchers']
|
11
|
+
@open_issues = repo['open_issues']
|
12
|
+
@url = repo['url']
|
13
|
+
@fork = repo['fork']
|
14
|
+
@publicly_visible = !repo['private']
|
15
|
+
@homepage = repo['homepage']
|
16
|
+
@owner = Owner.new(repo['owner']['name'], repo['owner']['email'])
|
17
|
+
@name = repo['name']
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns true if the repo is public, false otherwise
|
21
|
+
def publicly_visible?
|
22
|
+
@publicly_visible
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns true if the repo is a fork, false otherwise
|
26
|
+
def fork?
|
27
|
+
@fork
|
28
|
+
end
|
29
|
+
|
30
|
+
class Owner
|
31
|
+
attr_accessor :name, :email
|
32
|
+
|
33
|
+
def initialize(name, email)
|
34
|
+
@name = name
|
35
|
+
@email = email
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
2
|
+
|
3
|
+
describe Hubload do
|
4
|
+
describe "parse single commit payload" do
|
5
|
+
before(:each) do
|
6
|
+
@parsed_load = Hubload.new(single_commit_payload)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "should parse the payload's ref" do
|
10
|
+
it "should return a Hubload::Ref object" do
|
11
|
+
@parsed_load.ref.class.should == Hubload::Ref
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should correctly parse the ref value" do
|
15
|
+
@parsed_load.ref.value.should == "refs/heads/master"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "should parse the payload's before" do
|
20
|
+
it "should return a Hubload::Before object" do
|
21
|
+
@parsed_load.before.class.should == Hubload::Before
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should correctly parse the payload's before value" do
|
25
|
+
@parsed_load.before.value.should == "34891069f142cbfc80cc880e963b41a0104305c7"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "should parse the payload's after" do
|
30
|
+
it "should return a Hubload::After object" do
|
31
|
+
@parsed_load.after.class.should == Hubload::After
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should correctly parse the payload's after value" do
|
35
|
+
@parsed_load.after.value.should == "027fa2043b65e7d4092ba310966980db5d36a264"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "should parse the payload's repository" do
|
40
|
+
it "should return a Hubload::Repo object" do
|
41
|
+
@parsed_load.repo.class.should == Hubload::Repo
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should parse the number of forks for the repo" do
|
45
|
+
@parsed_load.repo.forks.should == 0
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should parse the repo's descriptions" do
|
49
|
+
@parsed_load.repo.description.should == "just for testing"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should parse the repo's watchers" do
|
53
|
+
@parsed_load.repo.watchers.should == 1
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should parse the repo's open issues" do
|
57
|
+
@parsed_load.repo.open_issues.should == 0
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should parse the repo's url" do
|
61
|
+
@parsed_load.repo.url.should == "http://github.com/hunt3131/post-receive-testing"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should determine if this repo is a fork" do
|
65
|
+
@parsed_load.repo.fork?.should == false
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should parse the visibility of the repo" do
|
69
|
+
@parsed_load.repo.publicly_visible?.should == true
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should parse the repo's homepage" do
|
73
|
+
@parsed_load.repo.homepage.should == "http://homepage.net"
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should parse the repo's owner" do
|
77
|
+
@parsed_load.repo.owner.email.should == "hunter.gillane@gmail.com"
|
78
|
+
@parsed_load.repo.owner.name.should == "hunt3131"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should parse the repo's name" do
|
82
|
+
@parsed_load.repo.name.should == "repo_1"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe "should parse the payloads single commit" do
|
87
|
+
it "should return an array of Hubload::Commit objects" do
|
88
|
+
commits = @parsed_load.commits
|
89
|
+
commits.each do |c|
|
90
|
+
c.class.should == Hubload::Commit
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should return a commit array with size 1" do
|
95
|
+
@parsed_load.commits.size.should == 1
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "should correctly parse the values of the first commit" do
|
99
|
+
|
100
|
+
before(:each) do
|
101
|
+
@commit = @parsed_load.commits[0]
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should parse the commit's message" do
|
105
|
+
@commit.message.should == "a text file"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should parse the commit's id" do
|
109
|
+
@commit.commit_id.should == "027fa2043b65e7d4092ba310966980db5d36a264"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should parse the commit's timestamp" do
|
113
|
+
@commit.timestamp.should == "2010-01-03T19:48:03-08:00"
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "parsing the commits time and date" do
|
117
|
+
it "should return a formatted time for the commit" do
|
118
|
+
@commit.pretty_time.should == "07:48 PM"
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should return a formatted date for the commit" do
|
122
|
+
@commit.pretty_date.should == "Jan 3, 2010"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should parse the commit's url" do
|
127
|
+
@commit.url.should == "http://github.com/hunt3131/post-receive-testing/commit/027fa2043b65e7d4092ba310966980db5d36a264"
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "it should parse the commit's author" do
|
131
|
+
it "return a Hubload::Commit::Author object" do
|
132
|
+
@commit.author.class.should == Hubload::Commit::Author
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should parse the author's name" do
|
136
|
+
@commit.author.name.should == "Hunter Gillane"
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should parse the author's email" do
|
140
|
+
@commit.author.email.should == "hunter.gillane@gmail.com"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should create a list of the files changed" do
|
145
|
+
@commit.modified_files.should == ["modified_file_1.txt", "modified_file_2.txt"]
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should create a list of the files removed" do
|
149
|
+
@commit.removed_files.should == ["removed_file_1.txt", "removed_file_2.txt"]
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should create a list of the files added" do
|
153
|
+
@commit.added_files.should == ["new_file_1.txt", "new_file_2.txt"]
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "parse a multi-commit payload" do
|
160
|
+
before(:each) do
|
161
|
+
@parsed_load = Hubload.new(multi_commit_payload)
|
162
|
+
@commit_1 = @parsed_load.commits[0]
|
163
|
+
@commit_2 = @parsed_load.commits[1]
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should return an array of two commits" do
|
167
|
+
@parsed_load.commits.size.should == 2
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should return a unique commit id for both commits" do
|
171
|
+
@commit_1.commit_id.should_not == @commit_2.commit_id
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'hubload')
|
2
|
+
|
3
|
+
def single_commit_payload
|
4
|
+
'{"commits":[{"removed":["removed_file_1.txt", "removed_file_2.txt"],"message":"a text file","modified":["modified_file_1.txt", "modified_file_2.txt"],"url":"http://github.com/hunt3131/post-receive-testing/commit/027fa2043b65e7d4092ba310966980db5d36a264","added":["new_file_1.txt", "new_file_2.txt"],"author":{"email":"hunter.gillane@gmail.com","name":"Hunter Gillane"},"timestamp":"2010-01-03T19:48:03-08:00","id":"027fa2043b65e7d4092ba310966980db5d36a264"}],"repository":{"forks":0,"description":"just for testing","watchers":1,"open_issues":0,"url":"http://github.com/hunt3131/post-receive-testing","fork":false,"private":false,"homepage":"http://homepage.net","owner":{"email":"hunter.gillane@gmail.com","name":"hunt3131"},"name":"repo_1"},"ref":"refs/heads/master","before":"34891069f142cbfc80cc880e963b41a0104305c7","after":"027fa2043b65e7d4092ba310966980db5d36a264"}'
|
5
|
+
end
|
6
|
+
|
7
|
+
def multi_commit_payload
|
8
|
+
'{"commits":[{"removed":["removed_file_1.txt", "removed_file_2.txt"],"message":"a text file","modified":["modified_file_1.txt", "modified_file_2.txt"],"url":"http://github.com/hunt3131/post-receive-testing/commit/027fa2043b65e7d4092ba310966980db5d36a264","added":["new_file_1.txt", "new_file_2.txt"],"author":{"email":"hunter.gillane@gmail.com","name":"Hunter Gillane"},"timestamp":"2010-01-03T19:48:03-08:00","id":"027fa2043b65e7d4092ba310966980db5d36a264"}, {"removed": [], "message": "second commit", "modified": [],"url": "http://github.com/hunt3131/post-receive-testing/commit/027fa2043b65e7d4092ba310966980db5d36a265","added": ["commit_2_file.txt" ], "author": { "email": "someoneelse@gmail.com", "name": "Some guy" }, "timestamp": "2010-01-03T19:48:03-09:00", "id": "027fa2043b65e7d4092ba310966980db5d36a265" }],"repository":{"forks":0,"description":"just for testing","watchers":1,"open_issues":0,"url":"http://github.com/hunt3131/post-receive-testing","fork":false,"private":false,"homepage":"http://homepage.net","owner":{"email":"hunter.gillane@gmail.com","name":"hunt3131"},"name":"repo_1"},"ref":"refs/heads/master","before":"34891069f142cbfc80cc880e963b41a0104305c7","after":"027fa2043b65e7d4092ba310966980db5d36a264"}'
|
9
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hubload
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hunter Gillane
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-02-09 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Parses post-receive payloads from GitHub
|
17
|
+
email: hunter.gillane@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- LICENSE
|
24
|
+
- README.rdoc
|
25
|
+
files:
|
26
|
+
- LICENSE
|
27
|
+
- README.rdoc
|
28
|
+
- Rakefile
|
29
|
+
- VERSION
|
30
|
+
- lib/hubload.rb
|
31
|
+
- lib/hubload/after.rb
|
32
|
+
- lib/hubload/before.rb
|
33
|
+
- lib/hubload/commit.rb
|
34
|
+
- lib/hubload/ref.rb
|
35
|
+
- lib/hubload/repo.rb
|
36
|
+
- spec/hubload_spec.rb
|
37
|
+
- spec/spec_helper.rb
|
38
|
+
has_rdoc: true
|
39
|
+
homepage: http://github.com/pinecon3/hubload
|
40
|
+
licenses: []
|
41
|
+
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options:
|
44
|
+
- --charset=UTF-8
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
version:
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
version:
|
59
|
+
requirements: []
|
60
|
+
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 1.3.5
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: Parses post-receive payloads from GitHub
|
66
|
+
test_files:
|
67
|
+
- spec/hubload_spec.rb
|
68
|
+
- spec/spec_helper.rb
|