ruby-quilt 0.0.5 → 0.0.6

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