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