1install_root = @config['install-root']
2
3# Fix Xcode projects to point to the right location of RubyCocoa.framework 
4DEFAULT_FRAMEWORK_PATH = '/Library/Frameworks/RubyCocoa.framework'
5TARGET_FRAMEWORK_PATH = File.join(File.expand_path("#{install_root}#{@config['frameworks']}"), 'RubyCocoa.framework')
6TARGET_FRAMEWORK_PATH.sub!(/^#{ENV['DSTROOT']}/, '') if ENV['DSTROOT']
7def fix_xcode_projects_in_dir(dstdir)
8  return if @packaging
9  Dir.glob("#{dstdir}/**/*.pbxproj") do |proj|
10    txt = File.read(proj)
11    if txt.gsub!(/#{DEFAULT_FRAMEWORK_PATH}/, TARGET_FRAMEWORK_PATH)
12      File.open(proj, 'w') { |io| io.write(txt) }
13    end
14  end
15end
16
17# If required, backup files create here.
18backup_dir = '/tmp/rubycocoa_backup'
19
20# Install ProjectBuilder Templates 
21pbextras_dir = 
22  @config['projectbuilder-extras'] ?
23    File.expand_path("#{install_root}#{@config['projectbuilder-extras']}") : nil
24xcodeextras_dir = 
25  @config['xcode-extras'] ? @config['xcode-extras'].split(',').map {|path|
26    File.expand_path("#{install_root}#{path}")} : nil
27if @config['macosx-deployment-target'].to_f >= 10.5
28  pbtmpldir = "template/ProjectBuilder" # for Xcode 3.x
29else
30  pbtmpldir = "template/Xcode2.x/ProjectBuilder" # for Xcode 2.x
31end
32
33[pbextras_dir, xcodeextras_dir].flatten.compact.each do |extras_dir|
34  [
35    [ "#{pbtmpldir}/File",
36      "#{extras_dir}/File Templates/Ruby" ],
37
38    [ "#{pbtmpldir}/Target",
39      "#{extras_dir}/Target Templates/Ruby" ],
40
41    [ "#{pbtmpldir}/Application/Cocoa-Ruby Application",
42      "#{extras_dir}/Project Templates/Application/Cocoa-Ruby Application" ],
43
44    [ "#{pbtmpldir}/Application/Cocoa-Ruby Document-based Application",
45      "#{extras_dir}/Project Templates/Application/Cocoa-Ruby Document-based Application" ],
46
47    [ "#{pbtmpldir}/Application/Cocoa-Ruby Core Data Application",
48      "#{extras_dir}/Project Templates/Application/Cocoa-Ruby Core Data Application" ],
49
50    [ "#{pbtmpldir}/Application/Cocoa-Ruby Core Data Document-based Application",
51      "#{extras_dir}/Project Templates/Application/Cocoa-Ruby Core Data Document-based Application" ],
52
53  ].each do |srcdir, dstdir|
54    if FileTest.exist?( dstdir ) then
55      backupname = File.basename( dstdir )
56      command "rm -rf '#{backup_dir}/#{backupname}'"
57      command "mkdir -p '#{backup_dir}'"
58      command "mv '#{dstdir}' '#{backup_dir}/'"
59    end
60    command "mkdir -p '#{File.dirname(dstdir)}'"
61    command "cp -R '#{srcdir}' '#{dstdir}'"
62    command "find '#{dstdir}' -name '*.in' -print0 | /usr/bin/xargs -0 rm"
63  
64    fix_xcode_projects_in_dir(dstdir) 
65  end
66end
67
68# Install Examples & Document
69[
70  [ 'sample', "#{install_root}#{@config['examples']}", 'g+w', true ],
71  [ 'doc',    "#{install_root}#{@config['documentation']}", nil, false ],
72
73].each do |srcdir, dstdir, chmod, fix_xcode_projects|
74  if File.exist?( "#{dstdir}/RubyCocoa" ) then
75    command "rm -rf '#{backup_dir}/#{srcdir}'"
76    command "mkdir -p '#{backup_dir}'"
77    command "mv '#{dstdir}/RubyCocoa' '#{backup_dir}/#{srcdir}'"
78  end
79  command "mkdir -p '#{dstdir}'"
80  command "cp -R '#{srcdir}' '#{dstdir}/RubyCocoa'"
81  command "chmod -R #{chmod} '#{dstdir}/RubyCocoa'" if chmod
82
83  fix_xcode_projects_in_dir(dstdir) if fix_xcode_projects
84end
85if File.exist?('framework/bridge-doc')
86  # Frameworks HTML documentation 
87  dstdir = "#{install_root}#{@config['documentation']}/RubyCocoa/Frameworks"
88  command "cp -R 'framework/bridge-doc/html' '#{dstdir}'" if File.exist?('framework/bridge-doc/html')
89  # Frameworks RI documentation
90  basedstdir = @config['ri-dir']
91  unless File.exist?(basedstdir)
92    command "mkdir -p '#{basedstdir}'"
93  end
94  command "cp -R 'framework/bridge-doc/ri/OSX' '#{basedstdir}'" if File.exist?('framework/bridge-doc/ri/OSX')
95end
96