regrit 0.0.6 → 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/README.md +27 -0
- data/lib/regrit/provider/mock.rb +9 -0
- data/lib/regrit/provider/system.rb +10 -7
- data/lib/regrit/remote_repo.rb +4 -2
- data/lib/regrit/version.rb +1 -1
- data/regrit.gemspec +8 -4
- data/spec/mocks_enabled_spec.rb +17 -8
- data/spec/remote_repo_spec.rb +6 -2
- metadata +85 -128
data/README.md
CHANGED
@@ -1,3 +1,30 @@
|
|
1
1
|
# Regrit
|
2
2
|
|
3
|
+
Regrit provides an interface for remote repository. This gem is used by awsm to load remote refs and check deploy key installation.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
@repo ||= Regrit::RemoteRepo.new(repository_uri, :private_key => deploy_key_private)
|
8
|
+
|
9
|
+
if repo.private_key_required?
|
10
|
+
puts "this repo will require a deploy key to retrieve any information"
|
11
|
+
end
|
12
|
+
|
13
|
+
if repo.accessible?
|
14
|
+
puts "repo is accessible"
|
15
|
+
end
|
16
|
+
|
17
|
+
ref_list =
|
18
|
+
begin
|
19
|
+
repo.refs
|
20
|
+
rescue Regrit::Inaccessible
|
21
|
+
[]
|
22
|
+
end
|
23
|
+
|
24
|
+
commit_sha =
|
25
|
+
begin
|
26
|
+
repo.ref('master')
|
27
|
+
rescue Regrit::Inaccessible
|
28
|
+
nil
|
29
|
+
end
|
3
30
|
|
data/lib/regrit/provider/mock.rb
CHANGED
@@ -26,6 +26,7 @@ module Regrit
|
|
26
26
|
|
27
27
|
def initialize(uri, options)
|
28
28
|
@uri = uri
|
29
|
+
@options = options
|
29
30
|
end
|
30
31
|
|
31
32
|
def ls_remote(named=nil)
|
@@ -64,6 +65,14 @@ module Regrit
|
|
64
65
|
end
|
65
66
|
|
66
67
|
def raise_errors
|
68
|
+
if @uri.ssh?
|
69
|
+
begin
|
70
|
+
@git_ssh_wrapper ||= GitSSHWrapper.new(@options)
|
71
|
+
rescue GitSSHWrapper::PrivateKeyRequired
|
72
|
+
raise Regrit::PrivateKeyRequired.new(@uri)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
67
76
|
unless self.class.accessible
|
68
77
|
raise CommandError.new('mock command', 1, '', 'stderr')
|
69
78
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'open4'
|
2
2
|
require 'escape'
|
3
3
|
require 'git-ssh-wrapper'
|
4
|
-
require 'system_timer'
|
5
4
|
|
6
5
|
module Regrit
|
7
6
|
module Provider
|
@@ -10,8 +9,8 @@ module Regrit
|
|
10
9
|
|
11
10
|
def initialize(uri, options)
|
12
11
|
@uri = uri
|
13
|
-
@
|
14
|
-
|
12
|
+
@options = options
|
13
|
+
@timeout = @options[:timeout] || DEFAULT_TIMEOUT
|
15
14
|
end
|
16
15
|
|
17
16
|
def ls_remote(named=nil)
|
@@ -45,7 +44,7 @@ module Regrit
|
|
45
44
|
# Might raise CommandError or TimeoutError
|
46
45
|
def spawn(command)
|
47
46
|
stdout, stderr = '', ''
|
48
|
-
|
47
|
+
timeout(@timeout) do
|
49
48
|
Open4.spawn(command, :stdout => stdout, :stderr => stderr, :timeout => @timeout)
|
50
49
|
end
|
51
50
|
stdout
|
@@ -57,11 +56,15 @@ module Regrit
|
|
57
56
|
|
58
57
|
def git_command
|
59
58
|
# GIT_ASKPASS='echo' keeps password prompts from stalling the proccess (they still fail)
|
60
|
-
"env GIT_ASKPASS='echo' #{
|
59
|
+
"env GIT_ASKPASS='echo' #{git_ssh_wrapper_env} git"
|
61
60
|
end
|
62
61
|
|
63
|
-
def
|
64
|
-
@git_ssh_wrapper
|
62
|
+
def git_ssh_wrapper_env
|
63
|
+
@uri.ssh? ? git_ssh_wrapper.git_ssh : ''
|
64
|
+
end
|
65
|
+
|
66
|
+
def git_ssh_wrapper
|
67
|
+
@git_ssh_wrapper ||= GitSSHWrapper.new(@options)
|
65
68
|
rescue GitSSHWrapper::PrivateKeyRequired
|
66
69
|
raise Regrit::PrivateKeyRequired.new(@uri)
|
67
70
|
end
|
data/lib/regrit/remote_repo.rb
CHANGED
@@ -23,7 +23,7 @@ module Regrit
|
|
23
23
|
raise InvalidURIError
|
24
24
|
end
|
25
25
|
|
26
|
-
@
|
26
|
+
@options = options
|
27
27
|
end
|
28
28
|
|
29
29
|
# Decide if the URI is likely to require authentication
|
@@ -58,7 +58,9 @@ module Regrit
|
|
58
58
|
|
59
59
|
private
|
60
60
|
|
61
|
-
|
61
|
+
def provider
|
62
|
+
@provider ||= Provider.new(@uri, @options)
|
63
|
+
end
|
62
64
|
|
63
65
|
def load_refs(named=nil)
|
64
66
|
raw_refs = provider.ls_remote(named)
|
data/lib/regrit/version.rb
CHANGED
data/regrit.gemspec
CHANGED
@@ -11,14 +11,18 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = %q{Never regrit how you talk with remote git repositories}
|
12
12
|
s.description = %q{Deal with remote git repositories, yo.}
|
13
13
|
|
14
|
-
s.add_dependency "gitable",
|
14
|
+
s.add_dependency "gitable", "~> 0.2.1"
|
15
15
|
s.add_dependency "open4"
|
16
16
|
s.add_dependency "escape"
|
17
|
-
s.add_dependency "git-ssh-wrapper", "~> 0.0
|
18
|
-
s.add_dependency "
|
17
|
+
s.add_dependency "git-ssh-wrapper", "~> 0.1.0"
|
18
|
+
s.add_dependency "system-timer19", "~> 0.0.2"
|
19
19
|
|
20
|
+
if RUBY_VERSION =~ /^1\.8/
|
21
|
+
s.add_dependency "SystemTimer"
|
22
|
+
end
|
23
|
+
|
20
24
|
s.add_development_dependency "rspec", "~> 2.0"
|
21
|
-
s.add_development_dependency "rake"
|
25
|
+
s.add_development_dependency "rake", "~> 0.9"
|
22
26
|
s.add_development_dependency "rcov"
|
23
27
|
|
24
28
|
s.files = `git ls-files`.split("\n")
|
data/spec/mocks_enabled_spec.rb
CHANGED
@@ -7,6 +7,7 @@ describe Regrit::RemoteRepo do
|
|
7
7
|
before { @uri = 'git://example.com/does/not/work.git' }
|
8
8
|
|
9
9
|
context "(public)" do
|
10
|
+
|
10
11
|
# This uri would not work if we weren't mocked
|
11
12
|
subject { described_class.new(@uri) }
|
12
13
|
|
@@ -27,8 +28,6 @@ describe Regrit::RemoteRepo do
|
|
27
28
|
it { should_not be_accessible }
|
28
29
|
|
29
30
|
it "should raise TimeoutError" do
|
30
|
-
subject { described_class.new(@uri) }
|
31
|
-
|
32
31
|
lambda { subject.refs }.should raise_error(Regrit::TimeoutError)
|
33
32
|
end
|
34
33
|
end
|
@@ -37,14 +36,21 @@ describe Regrit::RemoteRepo do
|
|
37
36
|
|
38
37
|
context "(private)" do
|
39
38
|
# This uri would not work if we weren't mocked
|
39
|
+
before { @uri = 'git@github.com:engineyard/regrit.git' }
|
40
40
|
|
41
41
|
context "(mocked accessible)" do
|
42
42
|
before { Regrit::Provider::Mock.accessible = true }
|
43
43
|
|
44
|
+
it "would raise if I used it, but can still be requested about auth" do
|
45
|
+
described_class.new(@uri).should be_private_key_required
|
46
|
+
end
|
47
|
+
|
48
|
+
it "still raises on no key" do
|
49
|
+
lambda { described_class.new(@uri).refs }.should raise_error(Regrit::PrivateKeyRequired)
|
50
|
+
end
|
51
|
+
|
44
52
|
it "still raises on bad key" do
|
45
|
-
|
46
|
-
lambda { described_class.new(@uri, :private_key => '') }.should raise_error
|
47
|
-
end
|
53
|
+
lambda { described_class.new(@uri, :private_key => '').refs }.should raise_error(Regrit::PrivateKeyRequired)
|
48
54
|
end
|
49
55
|
|
50
56
|
context "with a key" do
|
@@ -56,10 +62,13 @@ describe Regrit::RemoteRepo do
|
|
56
62
|
context "(mocked inaccessible)" do
|
57
63
|
before { Regrit::Provider::Mock.accessible = false }
|
58
64
|
|
65
|
+
it "would raise if I used it, but can still be requested about auth" do
|
66
|
+
described_class.new(@uri).should be_private_key_required
|
67
|
+
end
|
68
|
+
|
59
69
|
it "still raises on bad key" do
|
60
|
-
|
61
|
-
|
62
|
-
end
|
70
|
+
lambda { described_class.new(@uri).refs }.should raise_error(Regrit::PrivateKeyRequired)
|
71
|
+
lambda { described_class.new(@uri, :private_key => '').refs }.should raise_error(Regrit::PrivateKeyRequired)
|
63
72
|
end
|
64
73
|
|
65
74
|
context "with a key" do
|
data/spec/remote_repo_spec.rb
CHANGED
@@ -89,12 +89,16 @@ describe Regrit::RemoteRepo do
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
it "would raise if I used it, but can still be requested about auth" do
|
93
|
+
described_class.new(@uri).should be_private_key_required
|
94
|
+
end
|
95
|
+
|
92
96
|
it "raises on initialization without a key" do
|
93
|
-
lambda { described_class.new(@uri) }.should raise_error(Regrit::PrivateKeyRequired)
|
97
|
+
lambda { described_class.new(@uri).refs }.should raise_error(Regrit::PrivateKeyRequired)
|
94
98
|
end
|
95
99
|
|
96
100
|
it "raises on initialization with an empty key" do
|
97
|
-
lambda { described_class.new(@uri, :private_key => '') }.should raise_error(Regrit::PrivateKeyRequired)
|
101
|
+
lambda { described_class.new(@uri, :private_key => '').refs }.should raise_error(Regrit::PrivateKeyRequired)
|
98
102
|
end
|
99
103
|
|
100
104
|
context "with wrong key" do
|
metadata
CHANGED
@@ -1,150 +1,111 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: regrit
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 6
|
10
|
-
version: 0.0.6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Martin Emde
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: gitable
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70278541044920 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
18
|
+
requirements:
|
27
19
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 21
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 2
|
33
|
-
- 1
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 0.2.1
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: open4
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: *70278541044920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: open4
|
27
|
+
requirement: &70278541044500 !ruby/object:Gem::Requirement
|
41
28
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
49
33
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: escape
|
53
34
|
prerelease: false
|
54
|
-
|
35
|
+
version_requirements: *70278541044500
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: escape
|
38
|
+
requirement: &70278541044040 !ruby/object:Gem::Requirement
|
55
39
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
63
44
|
type: :runtime
|
64
|
-
version_requirements: *id003
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: git-ssh-wrapper
|
67
45
|
prerelease: false
|
68
|
-
|
46
|
+
version_requirements: *70278541044040
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: git-ssh-wrapper
|
49
|
+
requirement: &70278541043540 !ruby/object:Gem::Requirement
|
69
50
|
none: false
|
70
|
-
requirements:
|
51
|
+
requirements:
|
71
52
|
- - ~>
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
- 0
|
77
|
-
- 1
|
78
|
-
version: 0.0.1
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.0
|
79
55
|
type: :runtime
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: SystemTimer
|
83
56
|
prerelease: false
|
84
|
-
|
57
|
+
version_requirements: *70278541043540
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: system-timer19
|
60
|
+
requirement: &70278541043040 !ruby/object:Gem::Requirement
|
85
61
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
version: "0"
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.0.2
|
93
66
|
type: :runtime
|
94
|
-
version_requirements: *id005
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: rspec
|
97
67
|
prerelease: false
|
98
|
-
|
68
|
+
version_requirements: *70278541043040
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &70278541042560 !ruby/object:Gem::Requirement
|
99
72
|
none: false
|
100
|
-
requirements:
|
73
|
+
requirements:
|
101
74
|
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
segments:
|
105
|
-
- 2
|
106
|
-
- 0
|
107
|
-
version: "2.0"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2.0'
|
108
77
|
type: :development
|
109
|
-
version_requirements: *id006
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: rake
|
112
78
|
prerelease: false
|
113
|
-
|
79
|
+
version_requirements: *70278541042560
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &70278541042100 !ruby/object:Gem::Requirement
|
114
83
|
none: false
|
115
|
-
requirements:
|
116
|
-
- -
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
version: "0"
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.9'
|
122
88
|
type: :development
|
123
|
-
version_requirements: *id007
|
124
|
-
- !ruby/object:Gem::Dependency
|
125
|
-
name: rcov
|
126
89
|
prerelease: false
|
127
|
-
|
90
|
+
version_requirements: *70278541042100
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rcov
|
93
|
+
requirement: &70278541041720 !ruby/object:Gem::Requirement
|
128
94
|
none: false
|
129
|
-
requirements:
|
130
|
-
- -
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
|
133
|
-
segments:
|
134
|
-
- 0
|
135
|
-
version: "0"
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
136
99
|
type: :development
|
137
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70278541041720
|
138
102
|
description: Deal with remote git repositories, yo.
|
139
|
-
email:
|
103
|
+
email:
|
140
104
|
- martin.emde@gmail.com
|
141
105
|
executables: []
|
142
|
-
|
143
106
|
extensions: []
|
144
|
-
|
145
107
|
extra_rdoc_files: []
|
146
|
-
|
147
|
-
files:
|
108
|
+
files:
|
148
109
|
- .gitignore
|
149
110
|
- Gemfile
|
150
111
|
- README.md
|
@@ -165,41 +126,37 @@ files:
|
|
165
126
|
- spec/spec.opts
|
166
127
|
- spec/spec_helper.rb
|
167
128
|
- spec/wrong_key
|
168
|
-
has_rdoc: true
|
169
129
|
homepage: http://github.org/martinemde/regrit
|
170
130
|
licenses: []
|
171
|
-
|
172
131
|
post_install_message:
|
173
132
|
rdoc_options: []
|
174
|
-
|
175
|
-
require_paths:
|
133
|
+
require_paths:
|
176
134
|
- lib
|
177
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
136
|
none: false
|
179
|
-
requirements:
|
180
|
-
- -
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
|
183
|
-
segments:
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
segments:
|
184
142
|
- 0
|
185
|
-
|
186
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
hash: 677623455143979724
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
145
|
none: false
|
188
|
-
requirements:
|
189
|
-
- -
|
190
|
-
- !ruby/object:Gem::Version
|
191
|
-
|
192
|
-
segments:
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
segments:
|
193
151
|
- 0
|
194
|
-
|
152
|
+
hash: 677623455143979724
|
195
153
|
requirements: []
|
196
|
-
|
197
154
|
rubyforge_project:
|
198
|
-
rubygems_version: 1.
|
155
|
+
rubygems_version: 1.8.15
|
199
156
|
signing_key:
|
200
157
|
specification_version: 3
|
201
158
|
summary: Never regrit how you talk with remote git repositories
|
202
|
-
test_files:
|
159
|
+
test_files:
|
203
160
|
- spec/id_rsa
|
204
161
|
- spec/id_rsa.pub
|
205
162
|
- spec/mocks_enabled_spec.rb
|