Revision: 530 http://trac.macosforge.org/projects/ruby/changeset/530 Author: rich@infoether.com Date: 2008-08-30 10:48:14 -0700 (Sat, 30 Aug 2008) Log Message: ----------- add ability to copy files in the resources directory Modified Paths: -------------- MacRuby/trunk/lib/hotcocoa/application_builder.rb Modified: MacRuby/trunk/lib/hotcocoa/application_builder.rb =================================================================== --- MacRuby/trunk/lib/hotcocoa/application_builder.rb 2008-08-30 17:47:03 UTC (rev 529) +++ MacRuby/trunk/lib/hotcocoa/application_builder.rb 2008-08-30 17:48:14 UTC (rev 530) @@ -6,7 +6,7 @@ ApplicationBundlePackage = "APPL????" - attr_accessor :name, :load_file, :sources, :overwrite, :icon, :version, :info_string, :secure + attr_accessor :name, :load_file, :sources, :overwrite, :icon, :version, :info_string, :secure, :resources def self.build(build_options) build_options.each do |key, value| @@ -16,23 +16,28 @@ require 'yaml' build_options = YAML.load(File.read(build_options[:file])) end - ab = new - ab.secure = (build_options[:secure] == true) - ab.name = build_options[:name] - ab.load_file = build_options[:load] - ab.icon = build_options[:icon] if build_options[:icon] && File.exist?(build_options[:icon]) - ab.version = build_options[:version] || "1.0" - ab.info_string = build_options[:info_string] - ab.overwrite = (build_options.include?(:overwrite) ? build_options[:overwrite] : true) + builder = new + builder.secure = (build_options[:secure] == true) + builder.name = build_options[:name] + builder.load_file = build_options[:load] + builder.icon = build_options[:icon] if build_options[:icon] && File.exist?(build_options[:icon]) + builder.version = build_options[:version] || "1.0" + builder.info_string = build_options[:info_string] + builder.overwrite = (build_options.include?(:overwrite) ? build_options[:overwrite] : true) sources = build_options[:sources] || [] sources.each do |source| - ab << source + builder.add_source_path source end - ab.build + resources = build_options[:resources] || [] + resources.each do |resource| + builder.add_resource_path resource + end + builder.build end def initialize @sources = [] + @resources = [] end def build @@ -40,6 +45,7 @@ build_bundle_structure write_bundle_files copy_sources + copy_resources copy_icon_file if icon end @@ -47,11 +53,17 @@ @overwrite end - def <<(source_file_pattern) + def add_source_path(source_file_pattern) Dir.glob(source_file_pattern).each do |source_file| sources << source_file end end + + def add_resource_path(resource_file_pattern) + Dir.glob(resource_file_pattern).each do |resource_file| + resources << resource_file + end + end def secure? secure @@ -103,8 +115,16 @@ end end + def copy_resources + resources.each do |resource| + destination = File.join(resources_root, resource.split("/")[1..-1].join("/")) + FileUtils.mkdir_p(File.dirname(destination)) unless File.exist?(File.dirname(destination)) + FileUtils.cp_r resource, destination + end + end + def copy_icon_file - FileUtils.cp(icon, icon_file) + FileUtils.cp(icon, icon_file) unless File.exist?(icon_file) end def write_pkg_info_file