lib/devinstall.rb in devinstall-0.2.3 vs lib/devinstall.rb in devinstall-0.2.5

- old
+ new

@@ -1,17 +1,20 @@ require 'devinstall/version' require 'devinstall/deep_symbolize' +require 'devinstall/utils' require 'devinstall/settings' ## in near future we will have to abandon Settings # for something more complex because we will need to # define things (repos/install-hosts) for different # environments (dev/qa/prelive/live/prod/backup and so) require 'pp' module Devinstall class Pkg + include Utils + # @param [Symbol] type def get_version(type) if type == :deb begin deb_changelog = File.expand_path "#{Settings.local[:folder]}/#{@package}/debian/changelog" # This is the folder that should be checked @@ -41,17 +44,22 @@ end def upload (env) scp = Settings.base[:scp] repo = {} - type = Settings.repos[:environments][env][:type] + type = Settings.repos[:environments][env][:type].to_sym [:user, :host, :folder].each do |k| - fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[:environments][env].has_key?(k) + unless Settings.repos[:environments][env].has_key?(k) + puts "Unexistent key #{k} in repos:environments:#{env}" + puts "Aborting" + exit! 1 + end repo[k] = Settings.repos[:environments][env][k] end - @package_files[type].each do |p| - system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}") + @package_files[type].each do |p,f| + puts "Uploading #{f}\t\t[#{p}] to $#{repo[:host]}" + command("#{scp} #{Settings.local[:temp]}/#{f} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}") end end # @param [Symbol] type def build (type) @@ -63,10 +71,11 @@ end build = {} [:user, :host, :folder, :target].each do |k| unless Settings.build.has_key? k puts "Undefined key 'build:#{k.to_s}:'" + puts "Aborting!" exit! 1 end build[k] = Settings.build[k] end @@ -80,33 +89,23 @@ gsub('%t', Settings.build[:target]). gsub('%p', @package.to_s). gsub('%T', type.to_s) upload_sources("#{local_folder}/", "#{build[:user]}@#{build[:host]}:#{build[:folder]}") - res = system("#{ssh} #{build[:user]}@#{build[:host]} \"#{build_command}\"") - unless res - puts 'Build error' - puts 'Aborting!' - exit! 1 - end + command("#{ssh} #{build[:user]}@#{build[:host]} \"#{build_command}\"") @package_files[type].each do |p, t| puts "Receiving target #{p.to_s} for #{t.to_s}" - res = system("#{rsync} -az #{build[:user]}@#{build[:host]}:#{build[:target]}/#{t} #{local_temp}") - unless res - puts 'File downloading error' - puts 'Aborting!' - exit! 1 - end + command("#{rsync} -az #{build[:user]}@#{build[:host]}:#{build[:target]}/#{t} #{local_temp}") end end def run_tests(env) # for tests we will use aprox the same setup as for build test = {} [:user, :machine, :command, :folder].each do |k| unless Settings.tests[env].has_key? k - puts("Undefined key 'tests:#{environment}:#{k.to_s}:'") + puts("Undefined key 'tests:#{env}:#{k.to_s}:'") exit! 1 end test[k] = Settings.tests[env][k] end ssh = Settings.base[:ssh] @@ -117,17 +116,13 @@ local_folder = File.expand_path Settings.local[:folder] #take the sources from the local folder upload_sources("#{local_folder}/", "#{test[:user]}@#{test[:machine]}:#{test[:folder]}") # upload them to the test machine - puts "Running all tests for the #{environment} environment" - puts "This will take some time" - ret = system("#{ssh} #{test[:user]}@#{test[:machine]} \"#{test[:command]}\"") - if ret - puts "Errors during test. Aborting current procedure" - exit! 1 - end + puts "Running all tests for the #{env} environment" + puts "This will take some time and you have no output" + command("#{ssh} #{test[:user]}@#{test[:machine]} \"#{test[:command]}\"") rescue => ee puts "Unknown exception during parsing config file" puts "Aborting (#{ee})" exit! 1 end @@ -146,26 +141,20 @@ end install[k] = Settings.install[:environments][environment][k] end case type when :deb - system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}:#{install[:folder]}") - system("#{sudo} #{Settings.build[:user]}@#{Settings.build[:host]} /usr/bin/dpkg -i '#{install[:folder]}/#{@package_files[type][:deb]}'") + command("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}:#{install[:folder]}") + command("#{sudo} #{install[:user]}@#{install[:host]} /usr/bin/dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}") else puts "unknown package type '#{type.to_s}'" exit! 1 end end def upload_sources (source, dest) rsync = Settings.base[:rsync] - res = system("#{rsync} -az #{source} #{dest}") - unless res - puts "Rsync error" - puts "Aborting!" - exit! 1 - end - res + command("#{rsync} -az #{source} #{dest}") end end end