push_handler 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/README.md +39 -33
- data/VERSION +1 -1
- data/lib/push_handler/config.rb +3 -1
- data/lib/push_handler.rb +12 -8
- data/push_handler.gemspec +72 -0
- data/spec/push_handler_spec.rb +13 -3
- metadata +25 -10
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -11,54 +11,60 @@ Config
|
|
11
11
|
4. In `.git/hooks/` directory of your repository, create a file called `post-receive`.
|
12
12
|
5. Add the following text to `post-receive`, filling in your information:
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
```ruby
|
15
|
+
#!/usr/bin/ruby
|
16
|
+
require 'rubygems'
|
17
|
+
require 'push_handler'
|
17
18
|
|
18
|
-
|
19
|
-
|
19
|
+
# Through STDIN git passes us: <oldrev> <newrev> <refname>
|
20
|
+
args = STDIN.readlines.first.split(/\s+/)
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
PushHandler.configure do |config|
|
23
|
+
config.repo = {
|
24
|
+
# Where to see the repository on the web
|
25
|
+
'url' => 'http://git.example.com',
|
25
26
|
|
26
|
-
|
27
|
-
|
27
|
+
# Repository name
|
28
|
+
'name' => 'Suppa Time',
|
28
29
|
|
29
|
-
|
30
|
-
|
30
|
+
# Directory on the machine where the contents of your .git folder lives
|
31
|
+
'working_dir' => '/mnt/suppa_time.git/',
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
'name' => 'Big Boss Man',
|
35
|
-
'email' => 'bbm@example.com'
|
36
|
-
}
|
37
|
-
}
|
33
|
+
# True if 'working_dir' is pointing to a bare repository
|
34
|
+
'is_bare' => true,
|
38
35
|
|
39
|
-
|
40
|
-
|
36
|
+
# Repository owner contact info
|
37
|
+
'owner' => {
|
38
|
+
'name' => 'Big Boss Man',
|
39
|
+
'email' => 'bbm@example.com'
|
40
|
+
}
|
41
|
+
}
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
# Links to objects in your repository. Put the wildcard '%s' where the reference should go.
|
44
|
+
config.urls['commit'] = 'http://git.example.com/commits?id=%s' # '%s' will be replaced with the commit sha
|
45
|
+
config.urls['branch'] = 'http://git.example.com/branches?id=%s' # '%s' will be the branch name
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
-
'hipchat' => {
|
48
|
-
'auth_token' => '9082afake90210',
|
49
|
-
'room' => 12345,
|
50
|
-
'notify' => true
|
51
|
-
}
|
52
|
-
}
|
53
|
-
end
|
47
|
+
# The url that the github-services server is running.
|
48
|
+
config.services['url'] = 'http://localhost:8080'
|
54
49
|
|
55
|
-
|
50
|
+
# This is your configuration for 3rd parties.
|
51
|
+
config.services['data'] = {
|
52
|
+
'hipchat' => {
|
53
|
+
'auth_token' => '9082afake90210',
|
54
|
+
'room' => 12345,
|
55
|
+
'notify' => true
|
56
|
+
}
|
57
|
+
}
|
58
|
+
end
|
56
59
|
|
60
|
+
PushHandler.send_to_services(*args)
|
61
|
+
```
|
57
62
|
|
58
63
|
Note
|
59
64
|
----
|
60
65
|
|
61
66
|
To see the parameters that each service requires you'll have to:
|
67
|
+
|
62
68
|
1. Go to the `github-services/` directory
|
63
69
|
2. Execute `rake services:config`
|
64
70
|
3. Open `config/services.json` and look up the requirements
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/push_handler/config.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
module PushHandler
|
2
2
|
class Config
|
3
3
|
attr_accessor :repo
|
4
|
-
attr_accessor :
|
4
|
+
attr_accessor :urls
|
5
|
+
attr_accessor :commit_url # DEPRECATED: please use urls['commit'] instead
|
5
6
|
attr_accessor :services
|
6
7
|
|
7
8
|
def initialize
|
8
9
|
@repo = Hash.new('')
|
9
10
|
@services = Hash.new()
|
10
11
|
@commit_url = ''
|
12
|
+
@urls = Hash.new('')
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/push_handler.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'grit'
|
3
3
|
require 'json'
|
4
|
+
require 'typhoeus'
|
4
5
|
require 'net/http'
|
5
6
|
require 'uri'
|
6
7
|
|
@@ -20,13 +21,15 @@ module PushHandler
|
|
20
21
|
def send_to_services(old_commit, new_commit, ref_name)
|
21
22
|
payload = construct_payload(old_commit, new_commit, ref_name)
|
22
23
|
config.services['data'].each_pair do |service, data|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
Typhoeus::Request.post(
|
25
|
+
config.services['url'] + '/' + service + '/push',
|
26
|
+
:method => :post,
|
27
|
+
:params => {
|
26
28
|
'data' => data.to_json,
|
27
29
|
'payload' => payload.to_json
|
28
|
-
}
|
29
|
-
|
30
|
+
},
|
31
|
+
:disable_ssl_peer_verification => true
|
32
|
+
)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
@@ -35,7 +38,8 @@ module PushHandler
|
|
35
38
|
hash_to_return = {
|
36
39
|
'after' => new_commit,
|
37
40
|
'before' => old_commit,
|
38
|
-
'ref' => ref_name
|
41
|
+
'ref' => ref_name,
|
42
|
+
'branch_url' => config.urls['branch'] % ref_name[/\/([^\/]+)$/, 1]
|
39
43
|
}
|
40
44
|
|
41
45
|
hash_to_return['repository'] = {
|
@@ -43,7 +47,7 @@ module PushHandler
|
|
43
47
|
'name' => config.repo['name'],
|
44
48
|
'owner' => config.repo['owner']
|
45
49
|
}
|
46
|
-
repo = Grit::Repo.new(config.repo['working_dir'])
|
50
|
+
repo = Grit::Repo.new(config.repo['working_dir'], :is_bare => config.repo['is_bare'])
|
47
51
|
commits = Grit::Commit.find_all(
|
48
52
|
repo,
|
49
53
|
"#{old_commit}..#{new_commit}",
|
@@ -59,7 +63,7 @@ module PushHandler
|
|
59
63
|
commit_hash['distinct'] = true
|
60
64
|
commit_hash['id'] = commit.sha
|
61
65
|
commit_hash['message'] = commit.message
|
62
|
-
commit_hash['url'] = config.commit_url % commit.sha
|
66
|
+
commit_hash['url'] = (config.urls['commit'] || config.commit_url) % commit.sha
|
63
67
|
commit_hash['author'] = {
|
64
68
|
'name' => commit.author.name,
|
65
69
|
'email' => commit.author.email
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{push_handler}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Michael Lavrisha"]
|
12
|
+
s.date = %q{2011-09-20}
|
13
|
+
s.description = %q{This gem is for integreting a privately hosted repository with the open source Github services project.}
|
14
|
+
s.email = %q{michael.lavrisha@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Guardfile",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.md",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/push_handler.rb",
|
28
|
+
"lib/push_handler/config.rb",
|
29
|
+
"push_handler.gemspec",
|
30
|
+
"spec/push_handler_spec.rb",
|
31
|
+
"spec/spec_helper.rb"
|
32
|
+
]
|
33
|
+
s.homepage = %q{http://github.com/vrish88/push_handler}
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = %q{1.4.2}
|
37
|
+
s.summary = %q{Format push data in a format that Github services understands.}
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
s.specification_version = 3
|
41
|
+
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<grit>, [">= 0"])
|
45
|
+
s.add_runtime_dependency(%q<typhoeus>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
48
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
49
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
50
|
+
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<json>, [">= 0"])
|
53
|
+
s.add_dependency(%q<grit>, [">= 0"])
|
54
|
+
s.add_dependency(%q<typhoeus>, [">= 0"])
|
55
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
56
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
57
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
58
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
59
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
60
|
+
end
|
61
|
+
else
|
62
|
+
s.add_dependency(%q<json>, [">= 0"])
|
63
|
+
s.add_dependency(%q<grit>, [">= 0"])
|
64
|
+
s.add_dependency(%q<typhoeus>, [">= 0"])
|
65
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
66
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
67
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
68
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
69
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
data/spec/push_handler_spec.rb
CHANGED
@@ -10,9 +10,13 @@ describe PushHandler do
|
|
10
10
|
'name' => 'Joe Schmoe',
|
11
11
|
'email' => 'schmoe@example.com'
|
12
12
|
},
|
13
|
-
'working_dir' => File.expand_path(File.dirname(__FILE__) + '/example_git_repo/')
|
13
|
+
'working_dir' => File.expand_path(File.dirname(__FILE__) + '/example_git_repo/'),
|
14
|
+
'is_bare' => false
|
15
|
+
} }
|
16
|
+
let(:urls) { {
|
17
|
+
'branch' => 'http://example.com/%s',
|
18
|
+
'commit' => 'http://example.com/master/commit?id=%s'
|
14
19
|
} }
|
15
|
-
let(:commit_url) { 'http://example.com/master/commit?id=%s'}
|
16
20
|
|
17
21
|
let(:old_commit_hash) { '1afa4eba68c883738af4536f7e04d978964bb523' }
|
18
22
|
let(:new_commit_hash) { '4e1b47e950a2f5d6afa6744fa92f3fce5d606e1b' }
|
@@ -21,7 +25,8 @@ describe PushHandler do
|
|
21
25
|
before :all do
|
22
26
|
PushHandler.configure do |config|
|
23
27
|
config.repo = repo
|
24
|
-
config.
|
28
|
+
config.urls['commit'] = urls['commit']
|
29
|
+
config.urls['branch'] = urls['branch']
|
25
30
|
config.services['url'] = 'http://localhost:8080'
|
26
31
|
end
|
27
32
|
end
|
@@ -50,6 +55,11 @@ describe PushHandler do
|
|
50
55
|
should include_hash('ref' => ref_name)
|
51
56
|
end
|
52
57
|
|
58
|
+
# NOT IN THE GITHUB SPECIFICATION
|
59
|
+
specify 'branch_url should have the branch name put into the url["branch"] string' do
|
60
|
+
should include_hash('branch_url' => urls['branch'] % 'master')
|
61
|
+
end
|
62
|
+
|
53
63
|
specify 'before should be the old commit hash' do
|
54
64
|
should include_hash('before' => old_commit_hash)
|
55
65
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: push_handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Lavrisha
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09-
|
18
|
+
date: 2011-09-20 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -48,8 +48,8 @@ dependencies:
|
|
48
48
|
requirement: *id002
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
prerelease: false
|
51
|
-
name:
|
52
|
-
type: :
|
51
|
+
name: typhoeus
|
52
|
+
type: :runtime
|
53
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
@@ -62,7 +62,7 @@ dependencies:
|
|
62
62
|
requirement: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
prerelease: false
|
65
|
-
name:
|
65
|
+
name: jeweler
|
66
66
|
type: :development
|
67
67
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
68
|
none: false
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
requirement: *id004
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
prerelease: false
|
79
|
-
name:
|
79
|
+
name: bundler
|
80
80
|
type: :development
|
81
81
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
82
82
|
none: false
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
requirement: *id005
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
prerelease: false
|
93
|
-
name:
|
93
|
+
name: rake
|
94
94
|
type: :development
|
95
95
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
@@ -104,7 +104,7 @@ dependencies:
|
|
104
104
|
requirement: *id006
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
prerelease: false
|
107
|
-
name:
|
107
|
+
name: rspec
|
108
108
|
type: :development
|
109
109
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
110
110
|
none: false
|
@@ -116,6 +116,20 @@ dependencies:
|
|
116
116
|
- 0
|
117
117
|
version: "0"
|
118
118
|
requirement: *id007
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
prerelease: false
|
121
|
+
name: ruby-debug
|
122
|
+
type: :development
|
123
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 3
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
version: "0"
|
132
|
+
requirement: *id008
|
119
133
|
description: This gem is for integreting a privately hosted repository with the open source Github services project.
|
120
134
|
email: michael.lavrisha@gmail.com
|
121
135
|
executables: []
|
@@ -135,6 +149,7 @@ files:
|
|
135
149
|
- VERSION
|
136
150
|
- lib/push_handler.rb
|
137
151
|
- lib/push_handler/config.rb
|
152
|
+
- push_handler.gemspec
|
138
153
|
- spec/push_handler_spec.rb
|
139
154
|
- spec/spec_helper.rb
|
140
155
|
has_rdoc: true
|