lib/boxgrinder-build/helpers/package-helper.rb in boxgrinder-build-0.4.1 vs lib/boxgrinder-build/helpers/package-helper.rb in boxgrinder-build-0.5.0

- old
+ new

@@ -18,38 +18,47 @@ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA # 02110-1301 USA, or see the FSF site: http://www.fsf.org. module BoxGrinder class PackageHelper - def initialize(config, appliance_config, options = {}) + def initialize(config, appliance_config, dir, options = {}) @config = config @appliance_config = appliance_config + @dir = dir @log = options[:log] || Logger.new(STDOUT) @exec_helper = options[:exec_helper] || ExecHelper.new({:log => @log}) end - def package(deliverables, type = :tar) - files = [] - files << File.basename(deliverables[:disk]) + def package(deliverables, options = {}) + type = options[:type] || :tar + plugin_info = options[:plugin_info] - [:metadata, :other].each do |deliverable_type| - deliverables[deliverable_type].each_value do |file| - files << File.basename(file) + platform = 'raw' + + unless plugin_info.nil? + if plugin_info[:type] == :platform + platform = plugin_info[:name].to_s end end - deliverable_platform = deliverables[:platform].nil? ? "" : deliverables[:platform] - package_path = "#{@appliance_config.path.dir.packages}/#{@appliance_config.name}-#{@appliance_config.version}.#{@appliance_config.release}-#{@appliance_config.hardware.arch}-#{deliverable_platform}.tgz" + files = [] + deliverables.each_value do |file| + files << File.basename(file) + end + + #TODO rewrite this to use deliverables and previous_deliverables + package_path = "#{@dir.tmp}/#{@appliance_config.name}-#{@appliance_config.version}.#{@appliance_config.release}-#{@appliance_config.os.name}-#{@appliance_config.os.version}-#{@appliance_config.hardware.arch}-#{platform}.tgz" + if File.exists?(package_path) - @log.info "Package of #{type} type for #{@appliance_config.name} appliance and #{deliverable_platform} platform already exists, skipping." + @log.info "Package of #{type} type for #{@appliance_config.name} appliance and #{platform} platform already exists, skipping." return package_path end FileUtils.mkdir_p(File.dirname(package_path)) - @log.info "Packaging #{@appliance_config.name} appliance for #{deliverable_platform} platform to #{type}..." + @log.info "Packaging #{@appliance_config.name} appliance for #{platform} platform to #{type}..." case type when :tar @exec_helper.execute "tar -C #{File.dirname(deliverables[:disk])} -cvzf '#{package_path}' #{files.join(' ')}" else \ No newline at end of file