add some error checking around Kernel.system

This commit is contained in:
Dan McAulay
2015-01-01 20:19:11 -08:00
parent df655fd966
commit b211e750d0
3 changed files with 23 additions and 11 deletions

26
crew
View File

@@ -148,18 +148,22 @@ def download
end end
def resolveDependenciesAndInstall def resolveDependenciesAndInstall
origin = @pkg.name begin
origin = @pkg.name
resolveDependencies resolveDependencies
search origin search origin
install install
rescue InstallError => e
#cleanup puts "install error: #{e.to_s}"
unless ARGV[2] == 'keep' ensure
Dir.chdir CREW_BREW_DIR do #cleanup
system "rm -rf *" unless ARGV[2] == 'keep'
system "mkdir dest" #this is a little ugly, feel free to find a better way Dir.chdir CREW_BREW_DIR do
system "rm -rf *"
system "mkdir dest" #this is a little ugly, feel free to find a better way
end
end end
end end
end end
@@ -183,7 +187,7 @@ def resolveDependencies
return if @dependencies.empty? return if @dependencies.empty?
puts "Following packages also need to be installed: " puts "Following packages also need to be installed: "
@dependencies.flatten!.each do |dep| @dependencies.flatten!.uniq!.each do |dep|
print dep + " " print dep + " "
end end
puts "" puts ""

View File

@@ -26,4 +26,10 @@ class Package
def self.build def self.build
end end
def self.system(*args)
Kernel.system(*args)
exitstatus = $?.exitstatus
raise InstallError.new("`#{args.join(" ")}` exited with #{exitstatus}") unless exitstatus == 0
end
end end

View File

@@ -1,3 +1,5 @@
class InstallError < RuntimeError; end
def property(*properties) def property(*properties)
properties.each do |prop| properties.each do |prop|
self.class_eval("def self.#{prop}(#{prop} = nil); @#{prop} = #{prop} if #{prop}; @#{prop}; end") self.class_eval("def self.#{prop}(#{prop} = nil); @#{prop} = #{prop} if #{prop}; @#{prop}; end")