buildr-as3 0.1.16 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +12 -4
- data/VERSION +1 -1
- data/buildr-as3.gemspec +1 -1
- data/lib/buildr/as3/alchemy.rb +46 -44
- data/lib/buildr/as3/apparat.rb +112 -61
- data/lib/buildr/as3/compiler.rb +30 -28
- data/lib/buildr/as3/doc.rb +5 -5
- data/lib/buildr/as3/flexsdk.rb +62 -17
- data/lib/buildr/as3/ide/fdt4.rb +16 -16
- data/lib/buildr/as3/packaging.rb +7 -7
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -4,17 +4,25 @@
|
|
4
4
|
|
5
5
|
= Changelog
|
6
6
|
|
7
|
+
== 0.1.17
|
8
|
+
|
9
|
+
* [FXIED]
|
10
|
+
Actually no files were updated in version 0.1.16 because of a git hick-up,
|
11
|
+
now the changes meant for 0.1.16 are applied in 0.1.17.
|
12
|
+
|
7
13
|
== 0.1.16
|
8
14
|
|
9
15
|
* [FEATURE]
|
10
|
-
|
16
|
+
API for Framworks and Toolkits integration has been refactored and updated.
|
11
17
|
|
12
18
|
* [FIXED] Issue 15
|
13
|
-
|
14
|
-
|
19
|
+
Zip file extraction is now handled with gnuwin32 unzip on Windows, and the equivalent
|
20
|
+
on *nix platforms as a fallback for rubyzip.
|
21
|
+
On Windows gnuwin32 unzip needs to be installed and added to the PATH variable.
|
15
22
|
|
16
23
|
* [FIXED] Issue 16
|
17
|
-
|
24
|
+
Binarymode was not set on target-file, which caused the downloaded archive to be corrupt.
|
25
|
+
This is an issue of buildr and was reported.
|
18
26
|
|
19
27
|
== 0.1.13
|
20
28
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.17
|
data/buildr-as3.gemspec
CHANGED
data/lib/buildr/as3/alchemy.rb
CHANGED
@@ -26,7 +26,9 @@ module Buildr
|
|
26
26
|
|
27
27
|
attr_reader :home, :achacks, :gcc, :flex_sdk, :alchemy_setup, :bin
|
28
28
|
|
29
|
-
def initialize(
|
29
|
+
def initialize(flex_sdk)
|
30
|
+
|
31
|
+
fail("Alchemy support currently only on *nix based systems.") if Buildr::Util.win_os?
|
30
32
|
|
31
33
|
@flex_sdk = flex_sdk
|
32
34
|
|
@@ -64,55 +66,55 @@ module Buildr
|
|
64
66
|
|
65
67
|
module Compiler
|
66
68
|
class AlcGcc < Buildr::Compiler::Base
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
attr_reader :project
|
73
|
-
|
74
|
-
def initialize(project, options)
|
75
|
-
super
|
76
|
-
@project = project
|
77
|
-
end
|
78
|
-
|
79
|
-
include Buildr::AS3::Compiler::CompilerUtils
|
69
|
+
specify :language => :c,
|
70
|
+
:sources => :c, :source_ext => :c,
|
71
|
+
:target => "bin", :target_ext => "swc",
|
72
|
+
:packaging => :swc
|
80
73
|
|
81
|
-
|
82
|
-
alchemy_tk = options[:alchemy]
|
83
|
-
flex_sdk = alchemy_tk.flex_sdk
|
84
|
-
output = Buildr::AS3::Compiler::CompilerUtils::get_output(project,target,:swc,options)
|
74
|
+
attr_reader :project
|
85
75
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
cmd_args << File.basename(options[:main])
|
90
|
-
cmd_args << "-O3 -Wall -swc"
|
91
|
-
cmd_args << "-o #{File.basename output}"
|
92
|
-
|
93
|
-
reserved = [:flexsdk,:main,:alchemy]
|
94
|
-
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
95
|
-
each do |key, value|
|
96
|
-
cmd_args << "-#{key}=#{value}"
|
76
|
+
def initialize(project, options)
|
77
|
+
super
|
78
|
+
@project = project
|
97
79
|
end
|
98
80
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
81
|
+
include Buildr::AS3::Compiler::CompilerUtils
|
82
|
+
|
83
|
+
def compile(sources, target, dependencies)
|
84
|
+
alchemy_tk = options[:alchemy]
|
85
|
+
flex_sdk = alchemy_tk.flex_sdk
|
86
|
+
output = Buildr::AS3::Compiler::CompilerUtils::get_output(project, target, :swc, options)
|
87
|
+
|
88
|
+
# gcc stringecho.c -O3 -Wall -swc -o stringecho.swc
|
89
|
+
cmd_args = []
|
90
|
+
cmd_args << "gcc"
|
91
|
+
cmd_args << File.basename(options[:main])
|
92
|
+
cmd_args << "-O3 -Wall -swc"
|
93
|
+
cmd_args << "-o #{File.basename output}"
|
94
|
+
|
95
|
+
reserved = [:flexsdk, :main, :alchemy]
|
96
|
+
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
97
|
+
each do |key, value|
|
98
|
+
cmd_args << "-#{key}=#{value}"
|
99
|
+
end
|
100
|
+
|
101
|
+
unless Buildr.application.options.dryrun
|
102
|
+
ENV["ALCHEMY_HOME"]= alchemy_tk.home
|
103
|
+
ENV["ALCHEMY_VER"] = "0.4a"
|
104
|
+
ENV["PATH"] = "#{alchemy_tk.bin}:#{ENV["PATH"]}"
|
105
|
+
ENV["ASC"]="#{alchemy_tk.home}/bin/asc.jar"
|
106
|
+
ENV["SWFBRIDGE"]="#{alchemy_tk.home}/bin/swfbridge"
|
107
|
+
ENV["PATH"] = "#{alchemy_tk.achacks}:#{ENV["PATH"]}"
|
108
|
+
ENV["PATH"] = "#{ENV["PATH"]}:#{flex_sdk.bin}"
|
109
|
+
project_dir = Dir.getwd
|
110
|
+
Dir.chdir File.dirname options[:main]
|
111
|
+
system(cmd_args.join(" "))
|
112
|
+
File.copy(File.basename(output), output)
|
113
|
+
File.delete File.basename(output)
|
114
|
+
Dir.chdir project_dir
|
115
|
+
end
|
113
116
|
end
|
114
117
|
end
|
115
|
-
end
|
116
118
|
end
|
117
119
|
end
|
118
120
|
end
|
data/lib/buildr/as3/apparat.rb
CHANGED
@@ -21,80 +21,131 @@
|
|
21
21
|
#
|
22
22
|
module Buildr
|
23
23
|
module AS3
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def initialize(apparat_version,apparat_url)
|
31
|
-
|
32
|
-
apparat_zip = Buildr::artifact("com.googlecode:apparat-bin:zip:#{apparat_version}").from(Buildr::download(apparat_url))
|
33
|
-
apparat_zip.invoke unless File.exists? apparat_zip.to_s
|
34
|
-
apparat_dir = File.join(File.dirname(apparat_zip.to_s), "apparat-bin-#{apparat_version}")
|
35
|
-
unless File.exists? apparat_dir
|
36
|
-
puts "Unzipping Apparat, this may take a while."
|
37
|
-
Buildr::unzip(apparat_dir=>apparat_zip.to_s).target.invoke
|
38
|
-
end
|
24
|
+
module Apparat
|
25
|
+
class ApparatToolkit
|
26
|
+
attr_reader :home, :asmifier, :concrete, :coverage, :dump,
|
27
|
+
:jitb, :reducer, :stripper, :tdsi, :asm_swc,
|
28
|
+
:ersatz_swc, :lzma_decoder_swc, :scala_home
|
39
29
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
@dump = "#{@home}/dump#{bat_ext}"
|
47
|
-
@jitb = "#{@home}/jitb#{bat_ext}"
|
48
|
-
@reducer = "#{@home}/reducer#{bat_ext}"
|
49
|
-
@stripper = "#{@home}/stripper#{bat_ext}"
|
50
|
-
@tdsi = "#{@home}/tdsi#{bat_ext}"
|
51
|
-
@asm_swc = "#{@home}/apparat-asm-#{apparat_version}.swc"
|
52
|
-
@ersatz_swc = "#{@home}/apparat-ersatz-#{apparat_version}.swc"
|
53
|
-
@lzma_decoder_swc = "#{@home}/apparat-lzma-decoder-#{apparat_version}.swc"
|
54
|
-
end
|
30
|
+
def initialize(version)
|
31
|
+
@version = version
|
32
|
+
@spec = "com.googlecode:apparat-bin:zip:#{@version}"
|
33
|
+
@apparat_zip = Buildr.artifact(@spec)
|
34
|
+
@apparat_dir = File.join(File.dirname(@apparat_zip.to_s), "apparat-bin-#{@version}", "apparat-#{@version}")
|
35
|
+
generate_paths @apparat_dir, @version
|
55
36
|
end
|
56
|
-
module Tasks
|
57
|
-
include Extension
|
58
37
|
|
59
|
-
|
60
|
-
Project.local_task('apparat_tdsi')
|
61
|
-
Project.local_task('apparat_reducer')
|
62
|
-
end
|
38
|
+
def invoke
|
63
39
|
|
64
|
-
|
40
|
+
if @url
|
41
|
+
Buildr.artifact(@spec).from(Buildr.download(@url)).invoke unless File.exists? @apparat_zip.to_s
|
42
|
+
else
|
43
|
+
Buildr.artifact(@spec).invoke unless File.exists? @apparat_zip.to_s
|
65
44
|
end
|
66
45
|
|
67
|
-
|
46
|
+
unless File.exists? @apparat_dir
|
47
|
+
puts "Unzipping Apparat, this might take a while."
|
48
|
+
unzip_dir = File.dirname @apparat_dir
|
49
|
+
if Buildr::Util.win_os?
|
50
|
+
puts "Please make sure unzip is installed and in your PATH variable!"
|
51
|
+
unzip @apparat_zip, unzip_dir
|
52
|
+
else
|
53
|
+
begin
|
54
|
+
Buildr.unzip(unzip_dir.to_s=>@apparat_zip.to_s).target.invoke
|
55
|
+
rescue TypeError
|
56
|
+
puts "RubyZip extract failed, trying system unzip now."
|
57
|
+
unzip @apparat_zip, unzip_dir
|
58
|
+
end
|
59
|
+
end
|
68
60
|
end
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
def from(url)
|
65
|
+
@url = url
|
66
|
+
self
|
67
|
+
end
|
69
68
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
69
|
+
def scala(scala_home)
|
70
|
+
@scala_home = scala_home
|
71
|
+
self
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
protected
|
76
|
+
|
77
|
+
def unzip(zip, destination)
|
78
|
+
project_dir = Dir.getwd
|
79
|
+
Dir.chdir File.dirname(zip.to_s)
|
80
|
+
system("unzip #{File.basename(zip.to_s).to_s} -d #{File.basename(destination).to_s}")
|
81
|
+
Dir.chdir project_dir
|
82
|
+
end
|
83
|
+
|
84
|
+
def generate_paths(home_dir, version)
|
85
|
+
@home = home_dir
|
86
|
+
bat_ext = Buildr::Util.win_os? ? "" : ""
|
87
|
+
@apparat = "#{@home}/apparat#{bat_ext}"
|
88
|
+
@asmifier = "#{@home}/asmifier#{bat_ext}"
|
89
|
+
@concrete = "#{@home}/concrete#{bat_ext}"
|
90
|
+
@coverage = "#{@home}/coverage#{bat_ext}"
|
91
|
+
@dump = "#{@home}/dump#{bat_ext}"
|
92
|
+
@jitb = "#{@home}/jitb#{bat_ext}"
|
93
|
+
@reducer = "#{@home}/reducer#{bat_ext}"
|
94
|
+
@stripper = "#{@home}/stripper#{bat_ext}"
|
95
|
+
@tdsi = "#{@home}/tdsi#{bat_ext}"
|
96
|
+
@asm_swc = "#{@home}/apparat-asm-#{version}.swc"
|
97
|
+
@ersatz_swc = "#{@home}/apparat-ersatz-#{version}.swc"
|
98
|
+
@lzma_decoder_swc = "#{@home}/apparat-lzma-decoder-#{version}.swc"
|
99
|
+
self
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
module Tasks
|
105
|
+
include Extension
|
106
|
+
|
107
|
+
first_time do
|
108
|
+
Project.local_task('apparat_tdsi')
|
109
|
+
Project.local_task('apparat_reducer')
|
110
|
+
end
|
111
|
+
|
112
|
+
before_define do |project|
|
113
|
+
end
|
114
|
+
|
115
|
+
after_define do |project|
|
116
|
+
end
|
117
|
+
|
118
|
+
def apparat_tdsi(options = {})
|
119
|
+
output = Buildr::AS3::Compiler::CompilerUtils::get_output(project, compile.target, compile.packaging, compile.options)
|
120
|
+
apparat_tk = compile.options[:apparat].invoke
|
121
|
+
cmd_args = []
|
122
|
+
cmd_args << "\"#{apparat_tk.tdsi}\""
|
123
|
+
cmd_args << "-i #{output}"
|
124
|
+
cmd_args << "-o #{output}"
|
125
|
+
reserved = []
|
126
|
+
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
79
127
|
each do |key, value|
|
80
|
-
|
81
|
-
end
|
82
|
-
system(cmd_args.join " ")
|
128
|
+
cmd_args << "-#{key} #{value}"
|
83
129
|
end
|
130
|
+
ENV["PATH"] = "#{apparat_tk.scala_home}/bin#{File::PATH_SEPARATOR}#{ENV["PATH"]}" if apparat_tk.scala_home && !ENV["PATH"].include?("#{apparat_tk.scala_home}/bin")
|
131
|
+
puts "path:", ENV["PATH"]
|
132
|
+
puts "tdsi:",cmd_args.join(" "), system(cmd_args.join " ")
|
133
|
+
end
|
84
134
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
135
|
+
def apparat_reducer(quality)
|
136
|
+
output = Buildr::AS3::Compiler::CompilerUtils::get_output(project, compile.target, compile.packaging, compile.options)
|
137
|
+
apparat_tk = compile.options[:apparat].invoke
|
138
|
+
cmd_args = []
|
139
|
+
cmd_args << "\"#{apparat_tk.reducer}\""
|
140
|
+
cmd_args << "-i #{output}"
|
141
|
+
cmd_args << "-o #{output}"
|
142
|
+
cmd_args << "-q"
|
143
|
+
cmd_args << quality || 100
|
144
|
+
ENV["PATH"] = "#{apparat_tk.scala_home}#{File::Separator}bin#{File::PATH_SEPARATOR}#{ENV["PATH"]}" if apparat_tk.scala_home && !ENV["PATH"].include?("#{apparat_tk.scala_home}/bin")
|
145
|
+
system(cmd_args.join " ")
|
96
146
|
end
|
97
147
|
end
|
148
|
+
end
|
98
149
|
end
|
99
150
|
class Project
|
100
151
|
include Buildr::AS3::Apparat::Tasks
|
data/lib/buildr/as3/compiler.rb
CHANGED
@@ -25,15 +25,15 @@ module Buildr
|
|
25
25
|
module AS3
|
26
26
|
module Compiler
|
27
27
|
module CompilerUtils
|
28
|
-
def self.get_output(
|
28
|
+
def self.get_output(project, target, package, options)
|
29
29
|
return options[:output] if options.has_key? :output
|
30
30
|
return "#{target}/#{File.basename(options[:main].to_s, File.extname(options[:main].to_s))}.swf" if package == :swf
|
31
31
|
return "#{target}/#{project.name.gsub(":", "-")}.swc" if package == :swc
|
32
|
-
fail(
|
32
|
+
fail("Could not guess output file.")
|
33
33
|
end
|
34
34
|
|
35
35
|
def needed?(sources, target, dependencies)
|
36
|
-
output =
|
36
|
+
output = CompilerUtils::get_output(project, target, project.compile.packaging, options)
|
37
37
|
sources.each do |source|
|
38
38
|
if is_output_outdated?(output, source)
|
39
39
|
puts "Recompile of #{project.name} needed: Sources are newer than target"
|
@@ -50,12 +50,12 @@ module Buildr
|
|
50
50
|
false
|
51
51
|
end
|
52
52
|
|
53
|
-
def is_output_outdated?(output,file_to_check)
|
53
|
+
def is_output_outdated?(output, file_to_check)
|
54
54
|
return true unless File.exists? output
|
55
|
-
older(output,file_to_check)
|
55
|
+
older(output, file_to_check)
|
56
56
|
end
|
57
57
|
|
58
|
-
def older(a,b) # a older than b
|
58
|
+
def older(a, b) # a older than b
|
59
59
|
timestamp_from_file(a) < timestamp_from_file(b)
|
60
60
|
end
|
61
61
|
|
@@ -93,8 +93,8 @@ module Buildr
|
|
93
93
|
include CompilerUtils
|
94
94
|
|
95
95
|
def compile(sources, target, dependencies)
|
96
|
-
flex_sdk = options[:flexsdk]
|
97
|
-
output =
|
96
|
+
flex_sdk = options[:flexsdk].invoke
|
97
|
+
output = CompilerUtils::get_output(project, target, :swf, options)
|
98
98
|
|
99
99
|
cmd_args = []
|
100
100
|
cmd_args << "-jar" << flex_sdk.mxmlc_jar
|
@@ -105,13 +105,13 @@ module Buildr
|
|
105
105
|
cmd_args << "-source-path" << sources.join(" ")
|
106
106
|
cmd_args << "-library-path+=#{dependencies.join(",")}" unless dependencies.empty?
|
107
107
|
options[:debug] = Buildr.options.debug.to_s
|
108
|
-
reserved = [:flexsdk
|
108
|
+
reserved = [:flexsdk, :main, :apparat]
|
109
109
|
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
110
110
|
each do |key, value|
|
111
|
-
|
111
|
+
cmd_args << "-#{key}=#{value}"
|
112
112
|
end
|
113
113
|
flex_sdk.default_options.each do |key, value|
|
114
|
-
|
114
|
+
cmd_args << "-#{key}=#{value}"
|
115
115
|
end
|
116
116
|
|
117
117
|
unless Buildr.application.options.dryrun
|
@@ -137,8 +137,8 @@ module Buildr
|
|
137
137
|
include CompilerUtils
|
138
138
|
|
139
139
|
def compile(sources, target, dependencies)
|
140
|
-
flex_sdk = options[:flexsdk]
|
141
|
-
output =
|
140
|
+
flex_sdk = options[:flexsdk].invoke
|
141
|
+
output = CompilerUtils::get_output(project, target, :swf, options)
|
142
142
|
|
143
143
|
cmd_args = []
|
144
144
|
cmd_args << "-jar" << flex_sdk.mxmlc_jar
|
@@ -150,13 +150,13 @@ module Buildr
|
|
150
150
|
cmd_args << "-source-path" << sources.join(" ")
|
151
151
|
cmd_args << "-library-path+=#{dependencies.join(",")}" unless dependencies.empty?
|
152
152
|
options[:debug] = Buildr.options.debug.to_s
|
153
|
-
reserved = [:flexsdk
|
153
|
+
reserved = [:flexsdk, :main, :apparat]
|
154
154
|
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
155
155
|
each do |key, value|
|
156
|
-
|
156
|
+
cmd_args << "-#{key}=#{value}"
|
157
157
|
end
|
158
158
|
flex_sdk.default_options.each do |key, value|
|
159
|
-
|
159
|
+
cmd_args << "-#{key}=#{value}"
|
160
160
|
end
|
161
161
|
|
162
162
|
unless Buildr.application.options.dryrun
|
@@ -171,6 +171,7 @@ module Buildr
|
|
171
171
|
:target => "bin", :target_ext => "swc",
|
172
172
|
:packaging => :swc
|
173
173
|
attr_reader :project
|
174
|
+
|
174
175
|
def initialize(project, options)
|
175
176
|
super
|
176
177
|
@project = project
|
@@ -179,8 +180,8 @@ module Buildr
|
|
179
180
|
include CompilerUtils
|
180
181
|
|
181
182
|
def compile(sources, target, dependencies)
|
182
|
-
flex_sdk = options[:flexsdk]
|
183
|
-
output =
|
183
|
+
flex_sdk = options[:flexsdk].invoke
|
184
|
+
output = CompilerUtils::get_output(project, target, :swc, options)
|
184
185
|
cmd_args = []
|
185
186
|
cmd_args << "-jar" << flex_sdk.compc_jar
|
186
187
|
cmd_args << "-output" << output
|
@@ -188,14 +189,14 @@ module Buildr
|
|
188
189
|
cmd_args << "-load-config" << flex_sdk.flex_config
|
189
190
|
cmd_args << "-include-sources" << sources.join(" ")
|
190
191
|
cmd_args << "-library-path+=#{dependencies.join(",")}" unless dependencies.empty?
|
191
|
-
reserved = [:flexsdk
|
192
|
+
reserved = [:flexsdk, :main, :apparat]
|
192
193
|
options[:debug] = Buildr.options.debug.to_s
|
193
194
|
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
194
195
|
each do |key, value|
|
195
|
-
|
196
|
-
|
196
|
+
cmd_args << "-#{key}=#{value}"
|
197
|
+
end
|
197
198
|
flex_sdk.default_options.each do |key, value|
|
198
|
-
|
199
|
+
cmd_args << "-#{key}=#{value}"
|
199
200
|
end
|
200
201
|
|
201
202
|
unless Buildr.application.options.dryrun
|
@@ -210,6 +211,7 @@ module Buildr
|
|
210
211
|
:target => "bin", :target_ext => "swc",
|
211
212
|
:packaging => :swc
|
212
213
|
attr_reader :project
|
214
|
+
|
213
215
|
def initialize(project, options)
|
214
216
|
super
|
215
217
|
@project = project
|
@@ -218,8 +220,8 @@ module Buildr
|
|
218
220
|
include CompilerUtils
|
219
221
|
|
220
222
|
def compile(sources, target, dependencies)
|
221
|
-
flex_sdk = options[:flexsdk]
|
222
|
-
output =
|
223
|
+
flex_sdk = options[:flexsdk].invoke
|
224
|
+
output = CompilerUtils::get_output(project, target, :swc, options)
|
223
225
|
cmd_args = []
|
224
226
|
cmd_args << "-jar" << flex_sdk.compc_jar
|
225
227
|
cmd_args << "-output" << output
|
@@ -229,13 +231,13 @@ module Buildr
|
|
229
231
|
cmd_args << "-include-sources" << sources.join(" ")
|
230
232
|
cmd_args << "-library-path+=#{dependencies.join(",")}" unless dependencies.empty?
|
231
233
|
options[:debug] = Buildr.options.debug.to_s
|
232
|
-
reserved = [:flexsdk
|
234
|
+
reserved = [:flexsdk, :main, :apparat]
|
233
235
|
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
234
236
|
each do |key, value|
|
235
|
-
|
236
|
-
|
237
|
+
cmd_args << "-#{key}=#{value}"
|
238
|
+
end
|
237
239
|
flex_sdk.default_options.each do |key, value|
|
238
|
-
|
240
|
+
cmd_args << "-#{key}=#{value}"
|
239
241
|
end
|
240
242
|
|
241
243
|
unless Buildr.application.options.dryrun
|
data/lib/buildr/as3/doc.rb
CHANGED
@@ -33,7 +33,7 @@ module Buildr
|
|
33
33
|
dependencies = project.compile.dependencies
|
34
34
|
sources = project.compile.sources
|
35
35
|
flex_sdk = options[:flexsdk]
|
36
|
-
output =
|
36
|
+
output = (options[:output] || "#{target}")
|
37
37
|
cmd_args = []
|
38
38
|
cmd_args << "-classpath" << "#{flex_sdk.home}/lib/xalan.jar"
|
39
39
|
cmd_args << "-classpath" << flex_sdk.asdoc_jar
|
@@ -45,13 +45,13 @@ module Buildr
|
|
45
45
|
cmd_args << "-doc-sources" << sources.join(" ")
|
46
46
|
cmd_args << "-templates-path" << flex_sdk.asdoc_templates
|
47
47
|
cmd_args << "-library-path+=#{dependencies.join(",")}" unless dependencies.empty?
|
48
|
-
reserved = [:flexsdk
|
48
|
+
reserved = [:flexsdk, :main, :classpath, :sourcepath]
|
49
49
|
options.to_hash.reject { |key, value| reserved.include?(key) }.
|
50
50
|
each do |key, value|
|
51
|
-
|
52
|
-
|
51
|
+
cmd_args << "-#{key}=#{value}"
|
52
|
+
end
|
53
53
|
flex_sdk.default_options.each do |key, value|
|
54
|
-
|
54
|
+
cmd_args << "-#{key}=#{value}"
|
55
55
|
end
|
56
56
|
unless Buildr.application.options.dryrun
|
57
57
|
Java::Commands.java cmd_args
|
data/lib/buildr/as3/flexsdk.rb
CHANGED
@@ -19,6 +19,10 @@
|
|
19
19
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
20
|
# THE SOFTWARE.
|
21
21
|
#
|
22
|
+
require 'tmpdir'
|
23
|
+
require "open-uri"
|
24
|
+
require "fileutils"
|
25
|
+
|
22
26
|
module Buildr
|
23
27
|
module AS3
|
24
28
|
module Flex
|
@@ -29,22 +33,69 @@ module Buildr
|
|
29
33
|
|
30
34
|
attr_writer :flex_config, :air_config, :asdoc_templates
|
31
35
|
|
32
|
-
def initialize(
|
33
|
-
|
36
|
+
def initialize(version)
|
37
|
+
@version = version
|
34
38
|
@default_options = {}
|
39
|
+
@spec = "com.adobe.flex:sdk:zip:#{@version}"
|
40
|
+
@sdk_zip = Buildr.artifact(@spec)
|
41
|
+
@sdk_dir = File.join(File.dirname(@sdk_zip.to_s), "sdk-#{@version}")
|
42
|
+
generate_paths @sdk_dir
|
43
|
+
self
|
44
|
+
end
|
35
45
|
|
36
|
-
|
46
|
+
def invoke
|
47
|
+
@url ||= generate_url_from_version @version
|
48
|
+
|
49
|
+
if Buildr::Util.win_os?
|
50
|
+
unless File.exists? @sdk_zip.to_s
|
51
|
+
FileUtils.mkdir_p File.dirname(@sdk_zip.to_s) unless File.directory? File.dirname(@sdk_zip.to_s)
|
52
|
+
File.open @sdk_zip.to_s, 'w' do |file|
|
53
|
+
file.binmode()
|
54
|
+
URI.read(@url, {:progress=>true}) { |chunk| file.write chunk }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
else
|
58
|
+
Buildr.artifact(@spec).from(Buildr.download(@url)).invoke unless File.exists? @sdk_zip.to_s
|
59
|
+
end
|
37
60
|
|
38
|
-
sdk_zip = Buildr::artifact("com.adobe.flex:sdk:zip:#{sdk_opts[:sdk_version]}").from(Buildr::download(sdk_opts[:sdk_url]))
|
39
|
-
sdk_zip.invoke unless File.exists? sdk_zip.to_s
|
40
|
-
sdk_dir = File.join(File.dirname(sdk_zip.to_s), "sdk-#{sdk_opts[:sdk_version]}")
|
41
61
|
|
42
|
-
unless File.exists? sdk_dir
|
43
|
-
puts "Unzipping FlexSDK, this
|
44
|
-
Buildr::
|
62
|
+
unless File.exists? @sdk_dir
|
63
|
+
puts "Unzipping FlexSDK, this might take a while."
|
64
|
+
if Buildr::Util.win_os?
|
65
|
+
puts "Please make sure unzip is installed and in your PATH variable!"
|
66
|
+
unzip @sdk_zip, @sdk_dir
|
67
|
+
else
|
68
|
+
begin
|
69
|
+
Buildr.unzip(@sdk_dir.to_s=>@sdk_zip.to_s).target.invoke
|
70
|
+
rescue TypeError
|
71
|
+
puts "RubyZip extract failed, trying system unzip now."
|
72
|
+
unzip @sdk_zip, @sdk_dir
|
73
|
+
end
|
74
|
+
end
|
45
75
|
end
|
76
|
+
self
|
77
|
+
end
|
78
|
+
|
79
|
+
def from(url)
|
80
|
+
@url = url
|
81
|
+
self
|
82
|
+
end
|
83
|
+
|
84
|
+
protected
|
46
85
|
|
47
|
-
|
86
|
+
def unzip(zip, destination)
|
87
|
+
project_dir = Dir.getwd
|
88
|
+
Dir.chdir File.dirname(zip.to_s)
|
89
|
+
system("unzip #{File.basename(zip.to_s).to_s} -d #{File.basename(destination).to_s}")
|
90
|
+
Dir.chdir project_dir
|
91
|
+
end
|
92
|
+
|
93
|
+
def generate_url_from_version(version)
|
94
|
+
"http://fpdownload.adobe.com/pub/flex/sdk/builds/flex#{version.split(".")[0]}/flex_sdk_#{version}.zip"
|
95
|
+
end
|
96
|
+
|
97
|
+
def generate_paths(home_dir)
|
98
|
+
@home = home_dir
|
48
99
|
@mxmlc_jar = "#{@home}/lib/mxmlc.jar"
|
49
100
|
@compc_jar = "#{@home}/lib/compc.jar"
|
50
101
|
@asdoc_jar = "#{@home}/lib/asdoc.jar"
|
@@ -55,14 +106,8 @@ module Buildr
|
|
55
106
|
@flex_config = "#{@home}/frameworks/flex-config.xml"
|
56
107
|
@air_config = "#{@home}/frameworks/air-config.xml"
|
57
108
|
@bin = "#{@home}/bin"
|
109
|
+
true
|
58
110
|
end
|
59
|
-
|
60
|
-
protected
|
61
|
-
|
62
|
-
def generate_url(opts = {})
|
63
|
-
opts[:sdk_url] ||= "http://fpdownload.adobe.com/pub/flex/sdk/builds/flex#{opts[:sdk_version].split(".")[0]}/flex_sdk_#{opts[:sdk_version]}.zip"
|
64
|
-
end
|
65
|
-
|
66
111
|
end
|
67
112
|
end
|
68
113
|
end
|
data/lib/buildr/as3/ide/fdt4.rb
CHANGED
@@ -40,10 +40,10 @@ module Buildr
|
|
40
40
|
after_define("as3:fdt4:generate" => :package) do |project|
|
41
41
|
project.task("as3:fdt4:generate") do
|
42
42
|
fail("Cannot create fdt4 projects on Windows machines, no support for symlinks.") unless !Buildr::Util.win_os?
|
43
|
-
if [:mxmlc
|
43
|
+
if [:mxmlc, :compc, :airmxmlc, :aircompc].include? project.compile.compiler
|
44
44
|
output = project.base_dir + "/.settings/com.powerflasher.fdt.classpath"
|
45
45
|
puts "Writing FDT4 classpath file: #{output}"
|
46
|
-
puts "WARNING: This will create symlinks in #{project.path_to(:lib
|
46
|
+
puts "WARNING: This will create symlinks in #{project.path_to(:lib, :main, :as3)} as FDT4 doesn't support referencing files outside of the project folder."
|
47
47
|
sdk_based_libs = []
|
48
48
|
sdk_based_libs << "frameworks/libs/player/{playerVersion}/playerglobal.swc"
|
49
49
|
sdk_based_libs << "frameworks/libs/flex.swc"
|
@@ -55,7 +55,7 @@ module Buildr
|
|
55
55
|
sdk_based_libs << "frameworks/libs/sparkskins.swc"
|
56
56
|
sdk_based_libs << "frameworks/libs/datavisualization.swc"
|
57
57
|
|
58
|
-
if [:airmxmlc
|
58
|
+
if [:airmxmlc, :aircompc].include? project.compile.compiler
|
59
59
|
sdk_based_libs << "frameworks/libs/air/airglobal.swc"
|
60
60
|
sdk_based_libs << "frameworks/libs/air/airframework.swc"
|
61
61
|
sdk_based_libs << "frameworks/libs/air/airspark.swc"
|
@@ -69,37 +69,37 @@ module Buildr
|
|
69
69
|
classpath_xml.instruct!
|
70
70
|
classpath_xml.AS3Classpath do
|
71
71
|
sdk_based_libs.each do |sdk_lib|
|
72
|
-
classpath_xml.AS3Classpath(
|
72
|
+
classpath_xml.AS3Classpath(sdk_lib, :generateProblems => false, :sdkBased => true, :type => "lib", :useAsSharedCode => "false")
|
73
73
|
end
|
74
74
|
project.compile.sources.each do |source|
|
75
|
-
classpath_xml.AS3Classpath(
|
75
|
+
classpath_xml.AS3Classpath(project.get_eclipse_relative_path(project, source), :generateProblems => true, :sdkBased => false, :type => project.get_fdt4_classpath_type(source), :useAsSharedCode => "false")
|
76
76
|
end
|
77
|
-
unless File.directory? project.path_to(:lib
|
77
|
+
unless File.directory? project.path_to(:lib, :main, :as3)
|
78
78
|
#:dummy is just a bogus thing, it somehow stops creating the folders a layer to early
|
79
|
-
FileUtils.mkdir_p File.dirname(project.path_to(:lib
|
79
|
+
FileUtils.mkdir_p File.dirname(project.path_to(:lib, :main, :as3, :dummy))
|
80
80
|
end
|
81
81
|
project.compile.dependencies.each do |dependency|
|
82
|
-
dependency = project.create_fdt4_dependency_symlink(
|
83
|
-
classpath_xml.AS3Classpath(
|
82
|
+
dependency = project.create_fdt4_dependency_symlink(project, dependency)
|
83
|
+
classpath_xml.AS3Classpath(project.get_eclipse_relative_path(project, dependency), :generateProblems => false, :sdkBased => false, :type => project.get_fdt4_classpath_type(dependency), :useAsSharedCode => "false")
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
87
|
unless File.directory? File.dirname(output)
|
88
88
|
Dir.mkdir File.dirname(output)
|
89
89
|
end
|
90
|
-
File.open(output, 'w') {|f| f.write(contents) }
|
90
|
+
File.open(output, 'w') { |f| f.write(contents) }
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
def create_fdt4_dependency_symlink(
|
95
|
+
def create_fdt4_dependency_symlink(project, dependency)
|
96
96
|
case source
|
97
97
|
when Buildr::Artifact then
|
98
98
|
path = dependency.name
|
99
99
|
else
|
100
100
|
path = dependency.to_s
|
101
101
|
end
|
102
|
-
target = project.path_to(:lib
|
102
|
+
target = project.path_to(:lib, :main, :as3) + "/" + File.basename(path)
|
103
103
|
unless target != path
|
104
104
|
File.delete(target) if File.exists?(target)
|
105
105
|
File.symlink path, target
|
@@ -107,7 +107,7 @@ module Buildr
|
|
107
107
|
target
|
108
108
|
end
|
109
109
|
|
110
|
-
def get_eclipse_relative_path(
|
110
|
+
def get_eclipse_relative_path(project, source)
|
111
111
|
case source
|
112
112
|
when Buildr::Artifact then
|
113
113
|
path = source.name
|
@@ -117,14 +117,14 @@ module Buildr
|
|
117
117
|
Util.relative_path(File.expand_path(path), project.base_dir)
|
118
118
|
end
|
119
119
|
|
120
|
-
def get_fdt4_classpath_type(
|
120
|
+
def get_fdt4_classpath_type(source)
|
121
121
|
case source
|
122
122
|
when Buildr::Artifact then
|
123
|
-
return "source" if File.directory?(
|
123
|
+
return "source" if File.directory?(source.name)
|
124
124
|
return "lib" if File.extname(source.name) == ".swc"
|
125
125
|
else
|
126
126
|
|
127
|
-
return "source" if File.directory?(
|
127
|
+
return "source" if File.directory?(source.to_s)
|
128
128
|
return "lib" if File.extname(source.to_s) == ".swc"
|
129
129
|
end
|
130
130
|
"Could not guess type!"
|
data/lib/buildr/as3/packaging.rb
CHANGED
@@ -37,7 +37,7 @@ module Buildr
|
|
37
37
|
super
|
38
38
|
enhance do
|
39
39
|
fail "File not found: #{src_swc}" unless File.exists? src_swc
|
40
|
-
File.copy(
|
40
|
+
File.copy(src_swc, target_swc)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -70,7 +70,7 @@ module Buildr
|
|
70
70
|
super
|
71
71
|
enhance do
|
72
72
|
fail "File not found: #{src_swf}" unless File.exists? src_swf
|
73
|
-
File.copy(
|
73
|
+
File.copy(src_swf, target_swf)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -156,7 +156,7 @@ module Buildr
|
|
156
156
|
args.each do |arg|
|
157
157
|
case arg
|
158
158
|
when Hash
|
159
|
-
arg.each do |key,value|
|
159
|
+
arg.each do |key, value|
|
160
160
|
@libs[key] = value
|
161
161
|
end
|
162
162
|
end
|
@@ -183,15 +183,15 @@ module Buildr
|
|
183
183
|
def package_as_swc(file_name)
|
184
184
|
fail("Package types don't match! :swc vs. :#{compile.packaging.to_s}") unless compile.packaging == :swc
|
185
185
|
SwcTask.define_task(file_name).tap do |swc|
|
186
|
-
swc.src_swc = Buildr::AS3::Compiler::CompilerUtils::get_output(project,compile.target
|
186
|
+
swc.src_swc = Buildr::AS3::Compiler::CompilerUtils::get_output(project, compile.target, :swc, compile.options)
|
187
187
|
swc.target_swc = file_name
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
191
|
def package_as_swf(file_name)
|
192
|
-
|
192
|
+
fail("Package types don't match! :swf vs. :#{compile.packaging.to_s}") unless compile.packaging == :swf
|
193
193
|
SwfTask.define_task(file_name).tap do |swf|
|
194
|
-
swf.src_swf =
|
194
|
+
swf.src_swf = Buildr::AS3::Compiler::CompilerUtils::get_output(project, compile.target, :swf, compile.options)
|
195
195
|
swf.target_swf = file_name
|
196
196
|
end
|
197
197
|
end
|
@@ -199,7 +199,7 @@ module Buildr
|
|
199
199
|
def package_as_air(file_name)
|
200
200
|
fail("Package types don't match! :swf vs. :#{compile.packaging.to_s}") unless compile.packaging == :swf
|
201
201
|
AirTask.define_task(file_name).tap do |swf|
|
202
|
-
swf.src_swf =
|
202
|
+
swf.src_swf = Buildr::AS3::Compiler::CompilerUtils::get_output(project, compile.target, :swf, compile.options)
|
203
203
|
swf.target_air = file_name
|
204
204
|
swf.flexsdk = compile.options[:flexsdk]
|
205
205
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildr-as3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 57
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 17
|
10
|
+
version: 0.1.17
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dominic Graefen
|