Building Cappuccino apps with rake now automatically nib2cibs all .nibs and .xibs in the project.

Reviewed by me.
This commit is contained in:
Francisco Tolmasky
2009-05-18 00:02:18 -07:00
parent f2f99833a6
commit 7f733fdf34
3 changed files with 75 additions and 10 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ spec = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.author = '280 North, Inc.'
s.email = 'feedback @nospam@ 280north.com'
s.homepage = 'cappuccino.org'
s.homepage = 'http://cappuccino.org/'
s.summary = "Objective-J extensions to Rake."
s.name = 'objective-j'
s.version = "0.7.0"
+48
View File
@@ -56,3 +56,51 @@ def file_d(*args, &block)
file fileTask.name => fileDirectory
end
def copy_resources(files, destination, &block)
copied_resources = []
files.each do |resource|
baselength = File.basename(resource).length
if File.directory? resource
FileList[resource + '/**/*'].each do |subresource|
if File.file? subresource
copied_resource = File.join(destination, subresource[(resource.length - baselength) .. -1])
custom_resource = true
custom_resource = block.call(subresource, copied_resource) if block_given?
if custom_resource == true
file_d copied_resource => [subresource] do
cp_r(subresource, copied_resource)
end
copied_resources << copied_resource
elsif custom_resource
copied_resources << custom_resource
end
end
end
else
copied_resource = File.join(destination, File.basename(resource))
custom_resource = true
custom_resource = block.call(resource, copied_resource) if block_given?
if custom_resource == true
file_d copied_resource => [resource] do
cp_r(resource, copied_resource)
end
copied_resources << copied_resource
elsif custom_resource
copied_resources << custom_resource
end
end
end
return copied_resources
end
+26 -9
View File
@@ -189,6 +189,7 @@ module ObjectiveJ
required_attribute :summary
required_attribute :identifier
required_attribute :nib2cib_flags, []
required_attribute :platforms, [Platform::ObjJ]
required_attribute :type, Bundle::Type::Application
@@ -217,6 +218,7 @@ module ObjectiveJ
# attribute_alias_singular :executable, :executables
attribute_alias_singular :author, :authors
attribute_alias_singular :flag, :flags
attribute_alias_singular :nib2cib_flag, :nib2cib_flags
attribute_alias_singular :platform, :platforms
# attribute_alias_singular :require_path, :require_paths
# attribute_alias_singular :test_file, :test_files
@@ -367,20 +369,35 @@ module ObjectiveJ
def define
validate
resources_path = File.join(build_path, 'Resources')
copied_resources = []
# create file tasks for copied resources
resources.each do |resource|
copied_resources = copy_resources resources, resources_path do |resource, copied_resource|
extname = File.extname(copied_resource)
copied_resource = File.join(resources_path, File.basename(resource))
if extname == '.xib' || extname == '.nib'
copied_resource = File.join(File.dirname(copied_resource), File.basename(copied_resource, extname)) + '.cib'
file_d copied_resource => [resource] do
cp_r(resource, resources_path)
file_d copied_resource => [resource] do
IO.popen("nib2cib #{resource} #{copied_resource} #{nib2cib_flags.join(' ') || ''}") do |nib2cib|
nib2cib.sync = true
while str = nib2cib.gets
puts str
end
end
end
copied_resource
else
extensionless = File.join(File.dirname(copied_resource), File.basename(copied_resource, extname))
if extname == '.cib' and (File.exists?(extensionless + '.xib') or File.exists?(extensionless + '.nib'))
false
else
true
end
end
copied_resources << copied_resource
end
info_plist_path = build_path + '/Info.plist'