lib/devinstall.rb in devinstall-0.0.5 vs lib/devinstall.rb in devinstall-0.0.6

- old
+ new

@@ -5,101 +5,100 @@ # environments (dev/qa/prelive/live/prod/backup and so) module Devinstall class Pkg - # @param [Symbol] type def get_version(type) if type == :deb - deb_changelog = "#{Settings.local[:folder]}/debian/changelog" # This is the folder that should be checked - deb_package_version =File.open(deb_changelog, 'r').gets.chomp.sub(/^.*\((.*)\).*$/, "\1") + deb_changelog = "#{Settings.local[:folder]}/debian/changelog" # This is the folder that should be checked + deb_package_version =File.open(deb_changelog, 'r').gets.chomp.sub(/^.*\((.*)\).*$/, "\1") @_package_version[:deb]=deb_package_version end end - end - def new (package) - # curently implemented only for .deb packages (for .rpm later :D) - @package =package.to_sym - @_package_version =Hash.new # versions for types: - @package_files =Hash.new - arch =Settings.build[:arch] - pname ="#{package}_#{get_version :deb}" - @package_files[:deb] ={deb: "#{pname}_#{arch}.deb", - tgz: "#{pname}.tar.gz", - dsc: "#{pname}.dsc", - chg: "#{pname}_debian.changes"} - end - - def upload! (environment) - scp =Settings.base[:scp] - repo =Hash.new - type =Settings.repos[environment][:type] - [:user, :host, :folder].each do |k| - fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[environment].has_key?(k) - repo[k]=Settings.repos[environment][k] + def new (package) + # curently implemented only for .deb packages (for .rpm later :D) + @package =package.to_sym + @_package_version =Hash.new # versions for types: + @package_files =Hash.new + arch =Settings.build[:arch] + pname ="#{package}_#{get_version :deb}" + @package_files[:deb] ={deb: "#{pname}_#{arch}.deb", + tgz: "#{pname}.tar.gz", + dsc: "#{pname}.dsc", + chg: "#{pname}_debian.changes"} end - build(type) - @package_files[type].each do |p| - system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}") - end - end - # @param [Symbol] type - def build! (type) - unless Settings.packages[@package].has_key?(type) - puts("Package '#{@package}' cannot be built for the required environment") - puts("undefined build configuration for '#{type.to_s}'") - exit!(1) + def upload! (environment) + scp =Settings.base[:scp] + repo =Hash.new + type =Settings.repos[environment][:type] + [:user, :host, :folder].each do |k| + fail("Unexistent key repos:#{environment}:#{k}") unless Settings.repos[environment].has_key?(k) + repo[k]=Settings.repos[environment][k] + end + build(type) + @package_files[type].each do |p| + system("#{scp} #{Settings.local[:temp]}/#{p} #{repo[:user]}@#{repo[:host]}:#{repo[:folder]}") + end end - build =Hash.new - [:user, :host, :folder, :target].each do |k| - unless Settings.build.has_key?(k) - puts("Undefined key 'build:#{k.to_s}:'") + + # @param [Symbol] type + def build! (type) + unless Settings.packages[@package].has_key?(type) + puts("Package '#{@package}' cannot be built for the required environment") + puts("undefined build configuration for '#{type.to_s}'") exit!(1) end - build[k]=Settings.build[k] - end + build =Hash.new + [:user, :host, :folder, :target].each do |k| + unless Settings.build.has_key?(k) + puts("Undefined key 'build:#{k.to_s}:'") + exit!(1) + end + build[k]=Settings.build[k] + end - ssh =Settings.base[:ssh] - build_command=Settings.packages[@package][type][:build_command] - rsync =Settings.base[:rsync] - local_folder =Settings.local[:folder] - local_temp =Settings.local[:temp] - build_command.sub('%f', Settings.build[:folder]). - sub('%t', Settings.build[:target]). - sub('%p', @package.to_s). - sub('%T', type.to_s) + ssh =Settings.base[:ssh] + build_command=Settings.packages[@package][type][:build_command] + rsync =Settings.base[:rsync] + local_folder =Settings.local[:folder] + local_temp =Settings.local[:temp] + build_command.sub('%f', Settings.build[:folder]). + sub('%t', Settings.build[:target]). + sub('%p', @package.to_s). + sub('%T', type.to_s) - system("#{rsync} -az #{local_folder}/ #{build[:user]}@#{build[:host]}:#{build[:folder]}") - system("#{ssh} #{build[:user]}@#{build[:host]} -c \"#{build_command}\"") - @package_files[type].each do |p| - system("#{rsync} -az #{build[:user]}@#{build[:host]}/#{build[:target]}/#{p} #{local_temp}") + system("#{rsync} -az #{local_folder}/ #{build[:user]}@#{build[:host]}:#{build[:folder]}") + system("#{ssh} #{build[:user]}@#{build[:host]} -c \"#{build_command}\"") + @package_files[type].each do |p| + system("#{rsync} -az #{build[:user]}@#{build[:host]}/#{build[:target]}/#{p} #{local_temp}") + end end - end - def install! (environment) - sudo =Settings.base[:sudo] - scp =Settings.base[:scp] - type =Settings.install[environment][:type] - local_temp =Settings.local[:temp] - build!(type) - install=Hash.new - [:user, :host, :folder].each do |k| - unless Settings.install[environment].has_key?(k) - puts "Undefined key 'install:#{environment.to_s}:#{k.to_s}'" - exit!(1) + def install! (environment) + sudo =Settings.base[:sudo] + scp =Settings.base[:scp] + type =Settings.install[environment][:type] + local_temp =Settings.local[:temp] + build!(type) + install=Hash.new + [:user, :host, :folder].each do |k| + unless Settings.install[environment].has_key?(k) + puts "Undefined key 'install:#{environment.to_s}:#{k.to_s}'" + exit!(1) + end + install[k]=Settings[environment][k] end - install[k]=Settings[environment][k] - end - case type.to_sym - when :deb - system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}/#{install[:folder]}") - system("#{sudo} #{build![:user]}@#{build[:host]} \"dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}") - else - puts "unknown package type '#{type.to_s}'" - exit!(1) + case type.to_sym + when :deb + system("#{scp} #{local_temp}/#{@package_files[type][:deb]} #{install[:user]}@#{install[:host]}/#{install[:folder]}") + system("#{sudo} #{build![:user]}@#{build[:host]} \"dpkg -i #{install[:folder]}/#{@package_files[type][:deb]}") + else + puts "unknown package type '#{type.to_s}'" + exit!(1) + end end end end