forked from cappuccino/cappuccino
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRakefile
161 lines (120 loc) · 5.06 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/usr/bin/env ruby
require 'common'
require 'rake'
require 'rake/clean'
subprojects = %w{External Objective-J Foundation AppKit Tools External/ojunit}
%w(build clean clobber).each do |task_name|
task task_name do
subrake(subprojects, task_name)
end
end
$DEBUG_ENV = File.join($BUILD_DIR, 'Debug', 'env')
$RELEASE_ENV = File.join($BUILD_DIR, 'Release', 'env')
$DOXYGEN_CONFIG = File.join('Tools', 'Documentation', 'Cappuccino.doxygen')
$DOCUMENTATION_BUILD = File.join($BUILD_DIR, 'Documentation')
$TOOLS_README = File.join('Tools', 'READMEs', 'TOOLS-README')
$TOOLS_EDITORS = File.join('Tools', 'Editors')
$TOOLS_INSTALLER = File.join('Tools', 'Install', 'install-tools')
$TOOLS_DOWNLOAD = File.join($BUILD_DIR, 'Cappuccino', 'Tools')
$TOOLS_DOWNLOAD_ENV = File.join($TOOLS_DOWNLOAD, 'objj')
$TOOLS_DOWNLOAD_EDITORS = File.join($TOOLS_DOWNLOAD, 'Editors')
$TOOLS_DOWNLOAD_README = File.join($TOOLS_DOWNLOAD, 'README')
$TOOLS_DOWNLOAD_INSTALLER = File.join($TOOLS_DOWNLOAD, 'install-tools')
$STARTER_README = File.join('Tools', 'READMEs', 'STARTER-README')
$STARTER_DOWNLOAD = File.join($BUILD_DIR, 'Cappuccino', 'Starter')
$STARTER_DOWNLOAD_APPLICATION = File.join($STARTER_DOWNLOAD, 'NewApplication')
$STARTER_DOWNLOAD_README = File.join($STARTER_DOWNLOAD, 'README')
$NARWHAL_PACKAGE = File.join($BUILD_DIR, 'Cappuccino', 'objj')
task :downloads => [:starter_download, :tools_download, :narwhal_package]
file_d $TOOLS_DOWNLOAD_ENV => [:debug, :release] do
rm_rf($TOOLS_DOWNLOAD_ENV)
cp_r(File.join($RELEASE_ENV), $TOOLS_DOWNLOAD_ENV)
cp_r(File.join($DEBUG_ENV, 'packages', 'objj', 'lib', 'Frameworks'), File.join($TOOLS_DOWNLOAD_ENV, 'packages', 'objj', 'lib', 'Frameworks', 'Debug'))
end
file_d $TOOLS_DOWNLOAD_EDITORS => [$TOOLS_EDITORS] do
cp_r(File.join($TOOLS_EDITORS, '.'), $TOOLS_DOWNLOAD_EDITORS)
end
file_d $TOOLS_DOWNLOAD_README => [$TOOLS_README] do
cp($TOOLS_README, $TOOLS_DOWNLOAD_README)
end
file_d $TOOLS_DOWNLOAD_INSTALLER => [$TOOLS_INSTALLER] do
cp($TOOLS_INSTALLER, $TOOLS_DOWNLOAD_INSTALLER)
end
task :objj_gem do
subrake('Tools/Rake', :objj_gem)
end
task :tools_download => [$TOOLS_DOWNLOAD_ENV, $TOOLS_DOWNLOAD_EDITORS, $TOOLS_DOWNLOAD_README, $TOOLS_DOWNLOAD_INSTALLER, :objj_gem]
task :starter_download => [$STARTER_DOWNLOAD_APPLICATION, $STARTER_DOWNLOAD_README]
task :narwhal_package => [$TOOLS_DOWNLOAD_ENV] do
rm_rf($NARWHAL_PACKAGE)
cp_r(File.join($TOOLS_DOWNLOAD_ENV, 'packages', 'objj'), $NARWHAL_PACKAGE)
end
task :deploy => [:downloads, :docs] do
#copy the docs into the starter pack
cp_r(File.join($DOCUMENTATION_BUILD, 'html', '.'), File.join($STARTER_DOWNLOAD, 'Documentation'))
cappuccino_output_path = File.join($BUILD_DIR, 'Cappuccino')
#zip the starter pack
starter_zip_output = File.join($BUILD_DIR, 'Cappuccino', 'Starter.zip')
rm_rf(starter_zip_output)
`cd #{cappuccino_output_path} && zip -ry -8 Starter.zip Starter`
#zip the tools pack
tools_zip_output = File.join($BUILD_DIR, 'Cappuccino', 'Tools.zip')
rm_rf(tools_zip_output)
`cd #{cappuccino_output_path} && zip -ry -8 Tools.zip Tools`
end
file_d $STARTER_DOWNLOAD_APPLICATION => [$TOOLS_DOWNLOAD_ENV] do
ENV['PATH'] = "#{File.join($TOOLS_DOWNLOAD_ENV, 'bin')}:#{ENV['PATH']}"
rm_rf($STARTER_DOWNLOAD_APPLICATION)
mkdir_p($STARTER_DOWNLOAD)
system %{capp gen #{$STARTER_DOWNLOAD_APPLICATION} -t Application --noconfig }
rake abort if ($? != 0)
# No tools means no objective-j gem
rm(File.join($STARTER_DOWNLOAD_APPLICATION, 'Rakefile'))
end
file_d $STARTER_DOWNLOAD_README => [$STARTER_README] do
cp($STARTER_README, $STARTER_DOWNLOAD_README)
end
task :install => [:tools_download] do
if ENV['prefix']
prefix = "--prefix #{ENV['prefix']}"
else
prefix = ''
end
system %{cd #{$TOOLS_DOWNLOAD} && sudo sh ./install-tools #{prefix} }
rake abort if ($? != 0)
end
task :test => [:build] do
tests = "'" + FileList['Tests/**/*Test.j'].join("' '") + "'"
build_result = %x{ojtest #{tests} }
if build_result.match(/Test suite failed/i)
puts "tests failed, aborting the build"
puts build_result
rake abort
else
puts build_result
end
end
task :docs do
if executable_exists? "doxygen"
system %{doxygen #{$DOXYGEN_CONFIG} }
rake abort if ($? != 0)
rm_rf $DOCUMENTATION_BUILD
mv "debug.txt", "Documentation"
mv "Documentation", $DOCUMENTATION_BUILD
else
puts 'doxygen not installed. skipping documentation generation.'
end
end
task :submodules do
if executable_exists? "git"
system %{git submodule init && git submodule update}
rake abort if ($? != 0)
else
puts "Git not installed"
rake abort
end
end
=begin
TODO: documentation
TODO: zip/tar.
=end