ruby-quilt 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/quilt.rb +31 -7
  2. metadata +23 -1
data/lib/quilt.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'logger'
2
2
  require 'json'
3
3
  require 'net/http'
4
+ require 'popen4'
5
+ require 'fileutils'
4
6
 
5
7
  class Quilt
6
8
  HEADER_KEY = "header"
@@ -184,6 +186,7 @@ class Quilt
184
186
  port = @config[:remote_port] ? @config[:remote_port].to_i : 80
185
187
  # Fetch the version
186
188
  filename = "#{name}.tgz"
189
+ version_dir = File.join(@config[:local_path], name)
187
190
  begin
188
191
  Net::HTTP.start(@config[:remote_host].to_s, port) do |http|
189
192
  res = http.get(File.join(@config[:remote_path].to_s, "#{name}.tgz"))
@@ -191,7 +194,8 @@ class Quilt
191
194
  log_error("no version fetched : #{res.code}")
192
195
  return nil
193
196
  end
194
- open(File.join(@config[:local_path], filename), "wb") do |file|
197
+ FileUtils.mkdir(version_dir) unless File.exists?(version_dir)
198
+ open(File.join(version_dir, filename), "wb") do |file|
195
199
  file.write(res.body)
196
200
  end
197
201
  end
@@ -200,16 +204,36 @@ class Quilt
200
204
  return nil
201
205
  end
202
206
  # Untar the version
203
- tar_output = `cd #{@config[:local_path]} && tar -xzf #{filename} 2>&1`
204
- if ($?.to_i != 0)
205
- log_error("unable to untar package")
206
- log_error(tar_output)
207
- `cd #{@config[:local_path]} && rm #{filename}`
207
+ tar_stdout = nil
208
+ tar_stderr = nil
209
+ tar_status =
210
+ POpen4::popen4("cd #{version_dir} && tar -xzf #{filename} && rm #{filename}") do |stdo, stde, stdi, pid|
211
+ stdi.close
212
+ tar_stdout = stdo.read.strip
213
+ tar_stderr = stde.read.strip
214
+ end
215
+ if (!tar_status.exitstatus.zero?)
216
+ log_error("unable to untar package: cd #{version_dir} && tar -xzf #{filename} && rm #{filename}")
217
+ log_error("stdout: #{tar_stdout}")
218
+ log_error("stderr: #{tar_stderr}")
219
+ begin
220
+ FileUtils.rm_r(version_dir)
221
+ rescue Exception => e
222
+ # do nothing
223
+ end
208
224
  return nil
209
225
  end
210
- `cd #{@config[:local_path]} && rm #{filename}`
211
226
  # Load the version
212
227
  @versions[name] = load_version(@config[:local_path], name)
228
+ if (!@versions[name])
229
+ begin
230
+ FileUtils.rm_r(version_dir)
231
+ rescue Exception => e
232
+ # do nothing
233
+ end
234
+ return nil
235
+ end
236
+ @versions[name]
213
237
  end
214
238
 
215
239
  def stitch(selector, version_name, prefix = :default)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-quilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -33,6 +33,28 @@ dependencies:
33
33
  - - ! '>='
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.6.6
36
+ - !ruby/object:Gem::Dependency
37
+ name: popen4
38
+ requirement: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '0.1'
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 0.1.2
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: 0.1.2
36
58
  - !ruby/object:Gem::Dependency
37
59
  name: rake
38
60
  requirement: !ruby/object:Gem::Requirement