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 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