regrit 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
 
@@ -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
- @timeout = options[:timeout] || DEFAULT_TIMEOUT
14
- load_git_ssh_wrapper(options) if @uri.ssh?
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
- SystemTimer.timeout(@timeout) do
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' #{@uri.ssh? ? @git_ssh_wrapper.git_ssh : ''} git"
59
+ "env GIT_ASKPASS='echo' #{git_ssh_wrapper_env} git"
61
60
  end
62
61
 
63
- def load_git_ssh_wrapper(options)
64
- @git_ssh_wrapper = GitSSHWrapper.new(options)
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
@@ -23,7 +23,7 @@ module Regrit
23
23
  raise InvalidURIError
24
24
  end
25
25
 
26
- @provider = Provider.new(@uri, options)
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
- attr_reader :provider
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)
@@ -1,3 +1,3 @@
1
1
  module Regrit
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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", "~> 0.2.1"
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.1"
18
- s.add_dependency "SystemTimer"
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")
@@ -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
- pending("should we care if the key is blank in mock mode?") do
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
- pending("should we care if the key is blank in mock mode?") do
61
- lambda { described_class.new(@uri, :private_key => '') }.should raise_error
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
@@ -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
- hash: 19
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
- date: 2011-02-22 00:00:00 -08:00
19
- default_executable:
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 29
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id006 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id007 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id008 !ruby/object:Gem::Requirement
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
- hash: 3
133
- segments:
134
- - 0
135
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
136
99
  type: :development
137
- version_requirements: *id008
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
- hash: 3
183
- segments:
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ segments:
184
142
  - 0
185
- version: "0"
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
- hash: 3
192
- segments:
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ segments:
193
151
  - 0
194
- version: "0"
152
+ hash: 677623455143979724
195
153
  requirements: []
196
-
197
154
  rubyforge_project:
198
- rubygems_version: 1.5.0
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