sprout-as3-bundle 0.2.9 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sprout/as3/version.rb +3 -3
- data/lib/sprout/as3_tasks.rb +3 -0
- data/lib/sprout/fcsh_lexer.rb +144 -0
- data/lib/sprout/fcsh_service.rb +111 -0
- data/lib/sprout/fcsh_socket.rb +36 -0
- data/lib/sprout/generators/project/project_generator.rb +1 -0
- data/lib/sprout/generators/project/templates/MainClass.as +2 -1
- data/lib/sprout/generators/project/templates/XMLRunner.as +17 -0
- data/lib/sprout/generators/project/templates/rakefile.rb +4 -0
- data/lib/sprout/generators/test/templates/TestCase.as +2 -2
- data/lib/sprout/tasks/adl_documentation.rb +79 -45
- data/lib/sprout/tasks/adt_documentation.rb +45 -79
- data/lib/sprout/tasks/{asdoc_rdoc.rb → asdoc_documentation.rb} +0 -0
- data/lib/sprout/tasks/asdoc_task.rb +33 -2
- data/lib/sprout/tasks/fcsh.rb +10 -0
- data/lib/sprout/tasks/fdb_task.rb +226 -14
- data/lib/sprout/tasks/mxmlc_ci.rb +62 -0
- data/lib/sprout/tasks/mxmlc_helper.rb +18 -3
- data/lib/sprout/tasks/mxmlc_task.rb +21 -6
- data/lib/sprout/tasks/mxmlc_unit.rb +1 -1
- data/rakefile.rb +2 -1
- metadata +21 -11
- data/lib/sprout/tasks/adl_rdoc.rb +0 -88
- data/lib/sprout/tasks/adt_cert_rdoc.rb +0 -44
- data/lib/sprout/tasks/adt_rdoc.rb +0 -54
- data/lib/sprout/tasks/compc_rdoc.rb +0 -606
- data/lib/sprout/tasks/fcsh_task.rb +0 -12
- data/lib/sprout/tasks/mxmlc_rdoc.rb +0 -547
data/lib/sprout/as3/version.rb
CHANGED
data/lib/sprout/as3_tasks.rb
CHANGED
@@ -0,0 +1,144 @@
|
|
1
|
+
=begin
|
2
|
+
Copyright (c) 2007 Pattern Park
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software and associated documentation files (the
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
=end
|
23
|
+
|
24
|
+
module Sprout
|
25
|
+
|
26
|
+
# This class should allow us to parse the stream output that FCSH provides.
|
27
|
+
# It was largely inspired by "LittleLexer" (http://rubyforge.org/projects/littlelexer/)
|
28
|
+
# which is a beautiful and concise general purpose lexer written by John Carter.
|
29
|
+
# Unfortunately, LittleLexer did not support streamed input, which
|
30
|
+
# we definitely need.
|
31
|
+
class FCSHLexer
|
32
|
+
PROMPT = ':prompt'
|
33
|
+
WARNING = ':warning'
|
34
|
+
ERROR = ':error'
|
35
|
+
PRELUDE = ':prelude'
|
36
|
+
|
37
|
+
PRELUDE_EXPRESSION = /(Adobe Flex Compiler.*\n.*\nCopyright.*\n)/m
|
38
|
+
|
39
|
+
def initialize(out=nil)
|
40
|
+
@out = out || $stdout
|
41
|
+
@regex_to_token = [
|
42
|
+
[/(.*Warning:.*\^.*)\n/m, WARNING], # Warning encountered
|
43
|
+
[/(.*Error:.*\^.*)\n/m, ERROR], # Error encountered
|
44
|
+
[PRELUDE_EXPRESSION, PRELUDE],
|
45
|
+
[/\n\(fcsh\)/, PROMPT] # Prompt for input
|
46
|
+
]
|
47
|
+
end
|
48
|
+
|
49
|
+
def scan_process(process_runner)
|
50
|
+
tokens = [];
|
51
|
+
# Collect Errors and Warnings in a way that doesn't
|
52
|
+
# Block forever when we have none....
|
53
|
+
t = Thread.new {
|
54
|
+
scan_stream(process_runner.e) do |token|
|
55
|
+
yield token if block_given?
|
56
|
+
tokens << token
|
57
|
+
end
|
58
|
+
}
|
59
|
+
|
60
|
+
# Collect stdout from the process:
|
61
|
+
scan_stream(process_runner.r) do |token|
|
62
|
+
yield token if block_given?
|
63
|
+
tokens << token
|
64
|
+
end
|
65
|
+
|
66
|
+
process_runner.e.sync = true
|
67
|
+
|
68
|
+
# GROSS HACK!
|
69
|
+
# It seems we need to wait
|
70
|
+
# for the fsch $stderr buffer to flush?
|
71
|
+
# There must be a better way... Anyone?
|
72
|
+
# Should we move to Highline for interactive
|
73
|
+
# shell applications?
|
74
|
+
# http://rubyforge.org/projects/highline/
|
75
|
+
# In fact - this problem actually ruins
|
76
|
+
# the entire implementation, the larger/longer
|
77
|
+
# it takes for errors to be bufferred, the more
|
78
|
+
# likely it is we'll return without displaying them.
|
79
|
+
# The only way to overcome this with the current
|
80
|
+
# implementation, is to increase the timeout so that
|
81
|
+
# FCSH takes a long, long time on every compilation!!!
|
82
|
+
sleep(0.2)
|
83
|
+
|
84
|
+
t.kill
|
85
|
+
return tokens
|
86
|
+
end
|
87
|
+
|
88
|
+
# We need to scan the stream as FCSH writes to it. Since FCSH is a
|
89
|
+
# persistent CLI application, it never sends an EOF or even a consistent
|
90
|
+
# EOL. In order to tokenize the output, we need to attempt to check
|
91
|
+
# tokens with each character added.
|
92
|
+
# scan_stream will block and read characters from the reader provided until
|
93
|
+
# it encounters a PROMPT token, at that time, it will return an array
|
94
|
+
# of all tokens found.
|
95
|
+
# It will additionally yield each token as it's found if a block is provided.
|
96
|
+
def scan_stream(reader)
|
97
|
+
tokens = []
|
98
|
+
partial = ''
|
99
|
+
index = 0
|
100
|
+
while(true) do
|
101
|
+
code = reader.getc
|
102
|
+
return if code.nil?
|
103
|
+
|
104
|
+
partial << code.chr
|
105
|
+
token = next_token(partial)
|
106
|
+
if(token)
|
107
|
+
tokens << token
|
108
|
+
yield token if block_given?
|
109
|
+
partial = ''
|
110
|
+
break if(token[:name] == PROMPT || token[:name] == ERROR)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
return tokens
|
115
|
+
end
|
116
|
+
|
117
|
+
private
|
118
|
+
|
119
|
+
# Retrieve the next token from the string, and
|
120
|
+
# return nil if no token is found
|
121
|
+
def next_token(string)
|
122
|
+
# puts "checking: #{string}"
|
123
|
+
@regex_to_token.each do |regex, token_name|
|
124
|
+
match = regex.match(string)
|
125
|
+
if match
|
126
|
+
return {:name => token_name, :match => match, :output => get_output(token_name, match)}
|
127
|
+
end
|
128
|
+
end
|
129
|
+
return nil
|
130
|
+
end
|
131
|
+
|
132
|
+
def get_output(name, match)
|
133
|
+
if(name == PROMPT)
|
134
|
+
return match.pre_match + "\n"
|
135
|
+
else
|
136
|
+
return match[0] + "\n"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def out
|
141
|
+
@out
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
=begin
|
2
|
+
Copyright (c) 2007 Pattern Park
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software and associated documentation files (the
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
|
23
|
+
TODO: Investigate jruby support, especially:
|
24
|
+
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=compilers_123_09.html
|
25
|
+
=end
|
26
|
+
|
27
|
+
require 'sprout/fcsh_lexer'
|
28
|
+
require 'digest/md5'
|
29
|
+
|
30
|
+
module Sprout
|
31
|
+
class FCSHError < StandardError #:nodoc:
|
32
|
+
end
|
33
|
+
|
34
|
+
class FCSHService
|
35
|
+
|
36
|
+
def initialize(out=nil)
|
37
|
+
@out = out || $stdout
|
38
|
+
@tasks = []
|
39
|
+
@lexer = FCSHLexer.new @out
|
40
|
+
|
41
|
+
# TODO: This should use configurable SDK destinations:
|
42
|
+
exe = Sprout.get_executable('sprout-flex3sdk-tool', 'bin/fcsh')
|
43
|
+
@process = User.execute_silent(exe)
|
44
|
+
|
45
|
+
response = ''
|
46
|
+
@lexer.scan_process(@process).each do |token|
|
47
|
+
response << token[:output]
|
48
|
+
end
|
49
|
+
out.puts response
|
50
|
+
end
|
51
|
+
|
52
|
+
# Temporarily pulled support for clear -
|
53
|
+
# since it's easier to just stop and start the server.
|
54
|
+
# The clear feature continues to increment task ids
|
55
|
+
# and requires deeper changes for full support...
|
56
|
+
# def clear
|
57
|
+
# @tasks.each_index do |index|
|
58
|
+
# write("clear #{index+1}")
|
59
|
+
# end
|
60
|
+
# @tasks = []
|
61
|
+
# return "[fcsh] All tasks have been cleared"
|
62
|
+
# end
|
63
|
+
|
64
|
+
def execute(request)
|
65
|
+
# if(request =~ /^clear/)
|
66
|
+
# return clear
|
67
|
+
# end
|
68
|
+
hashed = Digest::MD5.hexdigest(request)
|
69
|
+
|
70
|
+
# First, see if we've already received a task with this
|
71
|
+
# Exact command:
|
72
|
+
@tasks.each_index do |index|
|
73
|
+
task = @tasks[index]
|
74
|
+
if(task[:hash] == hashed)
|
75
|
+
out.puts "[fcsh] #{request})"
|
76
|
+
# Compile with an existing task at index+1
|
77
|
+
return write("compile #{index+1}")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# No existing task found with this hash, create a new
|
82
|
+
# task, store it for later, execute and return the result:
|
83
|
+
task = {:hash => hashed, :request => request, :executed => false}
|
84
|
+
@tasks << task
|
85
|
+
return write(task[:request])
|
86
|
+
end
|
87
|
+
|
88
|
+
def close
|
89
|
+
write("quit")
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def write(message)
|
95
|
+
result = ''
|
96
|
+
out.puts "[fcsh] #{message}"
|
97
|
+
@process.puts "#{message}\n"
|
98
|
+
@lexer.scan_process(@process) do |token|
|
99
|
+
yield token if block_given?
|
100
|
+
result << token[:output]
|
101
|
+
end
|
102
|
+
out.puts "[fcsh] #{result.strip}\n"
|
103
|
+
return result
|
104
|
+
end
|
105
|
+
|
106
|
+
def out
|
107
|
+
@out
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'sprout/fcsh_service'
|
3
|
+
|
4
|
+
module Sprout #:nodoc
|
5
|
+
|
6
|
+
class FCSHSocket
|
7
|
+
|
8
|
+
def self.server(port=12321, out=nil)
|
9
|
+
out = out || $stdout
|
10
|
+
server = TCPServer.new(port)
|
11
|
+
@fcsh = FCSHService.new(out)
|
12
|
+
out.puts ">> fcsh started, waiting for connections on port #{port}"
|
13
|
+
while(session = server.accept)
|
14
|
+
response = @fcsh.execute(session.gets)
|
15
|
+
session.puts(response)
|
16
|
+
session.flush
|
17
|
+
session.close
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.execute(command, port=12321)
|
22
|
+
session = TCPSocket.new('localhost', port)
|
23
|
+
session.puts(command)
|
24
|
+
response = session.read
|
25
|
+
|
26
|
+
error = response =~ /(.*Error:.*\^.*)\n/m
|
27
|
+
if(error)
|
28
|
+
raise FCSHError.new(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
session.close
|
32
|
+
return response
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -21,6 +21,7 @@ class ProjectGenerator < Sprout::Generator::NamedBase # :nodoc:
|
|
21
21
|
|
22
22
|
m.template 'MainClass.as', File.join(base, 'src', "#{class_name}.as")
|
23
23
|
m.template 'TestRunner.as', File.join(base, 'src', "#{class_name}Runner.as")
|
24
|
+
m.template 'XMLRunner.as', File.join(base, 'src', "#{class_name}XMLRunner.as")
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
package {
|
2
2
|
import flash.display.Sprite;
|
3
|
+
import flash.display.DisplayObject;
|
3
4
|
import skins.<%= project_name %>Skin;
|
4
5
|
|
5
6
|
public class <%= project_name %> extends Sprite {
|
6
7
|
|
7
8
|
public function <%= project_name %>() {
|
8
|
-
addChild(new <%= project_name %>Skin.ProjectSprouts());
|
9
|
+
addChild(new <%= project_name %>Skin.ProjectSprouts() as DisplayObject);
|
9
10
|
trace("<%= project_name %> instantiated!");
|
10
11
|
}
|
11
12
|
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
package {
|
2
|
+
import asunit.textui.TestRunner;
|
3
|
+
import asunit.textui.XMLResultPrinter;
|
4
|
+
|
5
|
+
public class <%= project_name %>XMLRunner extends TestRunner {
|
6
|
+
|
7
|
+
public function <%= project_name %>XMLRunner() {
|
8
|
+
// start(clazz:Class, methodName:String, showTrace:Boolean)
|
9
|
+
// NOTE: sending a particular class and method name will
|
10
|
+
// execute setUp(), the method and NOT tearDown.
|
11
|
+
// This allows you to get visual confirmation while developing
|
12
|
+
// visual entities
|
13
|
+
setPrinter(new XMLResultPrinter());
|
14
|
+
start(AllTests, null, TestRunner.SHOW_TRACE);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
@@ -11,6 +11,7 @@ project_model :model do |m|
|
|
11
11
|
m.background_color = '#FFFFFF'
|
12
12
|
m.width = 970
|
13
13
|
m.height = 550
|
14
|
+
# m.use_fcsh = true
|
14
15
|
# m.src_dir = 'src'
|
15
16
|
# m.lib_dir = 'lib'
|
16
17
|
# m.swc_dir = 'lib'
|
@@ -40,5 +41,8 @@ document :doc
|
|
40
41
|
desc 'Compile a SWC file'
|
41
42
|
swc :swc
|
42
43
|
|
44
|
+
desc 'Compile and run the test harness for CI'
|
45
|
+
ci :cruise
|
46
|
+
|
43
47
|
# set up the default rake task
|
44
48
|
task :default => :debug
|
@@ -6,7 +6,7 @@ package <%= package_name %> {
|
|
6
6
|
private var <%= instance_name %>:<%= class_name %>;
|
7
7
|
|
8
8
|
public function <%= test_case_name %>(methodName:String=null) {
|
9
|
-
super(methodName)
|
9
|
+
super(methodName);
|
10
10
|
}
|
11
11
|
|
12
12
|
override protected function setUp():void {
|
@@ -27,4 +27,4 @@ package <%= package_name %> {
|
|
27
27
|
assertTrue("Failing test", false);
|
28
28
|
}
|
29
29
|
}
|
30
|
-
}
|
30
|
+
}
|
@@ -1,53 +1,87 @@
|
|
1
1
|
module Sprout
|
2
|
-
class
|
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
|
-
def application_descriptor=(file)
|
38
|
-
@application_descriptor = file
|
2
|
+
class ADTTask < ToolTask
|
3
|
+
# Using -package option as default.
|
4
|
+
def package=(boolean)
|
5
|
+
@package = boolean
|
6
|
+
end
|
7
|
+
|
8
|
+
# The alias of a key in the keystore. Specifying an alias is not
|
9
|
+
# necessary when a keystore only contains a single certificate. If no
|
10
|
+
# alias is specified, ADT uses the first key in the keystore.
|
11
|
+
def alias=(string)
|
12
|
+
@alias = string
|
13
|
+
end
|
14
|
+
|
15
|
+
# The type of keystore, determined by the keystore implementation. The
|
16
|
+
# default keystore implementation included with most installations of
|
17
|
+
# Java supports the JKS and PKCS12 types. Java 5.0 includes support for
|
18
|
+
# the PKCS11 type, for accessing keystores on hardware tokens, and
|
19
|
+
# Keychain type, for accessing the Mac OS-X keychain. Java 6.0 includes
|
20
|
+
# support for the MSCAPI type (on Windows). If other JCA providers have
|
21
|
+
# been installed and configured, additional keystore types might be
|
22
|
+
# available. If no keystore type is specified, the default type for the
|
23
|
+
# default JCA provider is used.
|
24
|
+
def storetype=(string)
|
25
|
+
@storetype = string
|
26
|
+
end
|
27
|
+
|
28
|
+
# The JCA provider for the specified keystore type. If not specified,
|
29
|
+
# then ADT uses the default provider for that type of keystore.
|
30
|
+
def providerName=(string)
|
31
|
+
@providerName = string
|
32
|
+
end
|
33
|
+
|
34
|
+
# The path to the keystore file for file-based store types.
|
35
|
+
def keystore=(file)
|
36
|
+
@keystore = file
|
39
37
|
end
|
40
38
|
|
41
|
-
# The
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
|
39
|
+
# The password required to access the keystore. If not specified, ADT
|
40
|
+
# prompts for the password.
|
41
|
+
def storepass=(string)
|
42
|
+
@storepass = string
|
43
|
+
end
|
44
|
+
|
45
|
+
# The password required to access the private key that will be used to
|
46
|
+
# sign the AIR application. If not specified, ADT prompts for the password.
|
47
|
+
def keypass=(string)
|
48
|
+
@keypass = string
|
49
|
+
end
|
50
|
+
|
51
|
+
# Specifies the URL of an RFC3161-compliant time stamp server to time
|
52
|
+
# stamp the digital signature. If no URL is specified, a default time
|
53
|
+
# stamp server provided by Geotrust is used. When the signature of an AIR
|
54
|
+
# application is time stamped, the application can still be installed
|
55
|
+
# after the signing certificate expires, because the time stamp verifies
|
56
|
+
# that the certificate was valid at the time of signing.
|
57
|
+
def tsa=(url)
|
58
|
+
@tsa = url
|
59
|
+
end
|
60
|
+
|
61
|
+
# The name of the AIR file to be created.
|
62
|
+
def output=(file)
|
63
|
+
@output = file
|
64
|
+
end
|
65
|
+
|
66
|
+
# The path to the application descriptor file. The path can be specified
|
67
|
+
# relative to the current directory or as an absolute path. (The
|
68
|
+
# application descriptor file is renamed as "application.xml" in the AIR
|
69
|
+
# file.)
|
70
|
+
def application_descriptor=(file)
|
71
|
+
@application_descriptor = file
|
46
72
|
end
|
47
73
|
|
48
|
-
#
|
49
|
-
|
50
|
-
|
74
|
+
# The files and directories to package in the AIR file. Any number of
|
75
|
+
# files and directories can be specified, delimited by whitespace. If you
|
76
|
+
# list a directory, all files and subdirectories within, except hidden
|
77
|
+
# files, are added to the package. (In addition, if the application
|
78
|
+
# descriptor file is specified, either directly, or through wildcard or
|
79
|
+
# directory expansion, it is ignored and not added to the package a
|
80
|
+
# second time.) Files and directories specified must be in the current
|
81
|
+
# directory or one of its subdirectories. Use the -C option to change the
|
82
|
+
# current directory.
|
83
|
+
def files=(files)
|
84
|
+
@files = files
|
51
85
|
end
|
52
86
|
|
53
87
|
end
|
@@ -1,87 +1,53 @@
|
|
1
1
|
module Sprout
|
2
|
-
class
|
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
|
-
end
|
38
|
-
|
39
|
-
# The password required to access the keystore. If not specified, ADT
|
40
|
-
# prompts for the password.
|
41
|
-
def storepass=(string)
|
42
|
-
@storepass = string
|
43
|
-
end
|
44
|
-
|
45
|
-
# The password required to access the private key that will be used to
|
46
|
-
# sign the AIR application. If not specified, ADT prompts for the password.
|
47
|
-
def keypass=(string)
|
48
|
-
@keypass = string
|
49
|
-
end
|
50
|
-
|
51
|
-
# Specifies the URL of an RFC3161-compliant time stamp server to time
|
52
|
-
# stamp the digital signature. If no URL is specified, a default time
|
53
|
-
# stamp server provided by Geotrust is used. When the signature of an AIR
|
54
|
-
# application is time stamped, the application can still be installed
|
55
|
-
# after the signing certificate expires, because the time stamp verifies
|
56
|
-
# that the certificate was valid at the time of signing.
|
57
|
-
def tsa=(url)
|
58
|
-
@tsa = url
|
59
|
-
end
|
60
|
-
|
61
|
-
# The name of the AIR file to be created.
|
62
|
-
def output=(file)
|
63
|
-
@output = file
|
64
|
-
end
|
65
|
-
|
66
|
-
# The path to the application descriptor file. The path can be specified
|
67
|
-
# relative to the current directory or as an absolute path. (The
|
68
|
-
# application descriptor file is renamed as "application.xml" in the AIR
|
69
|
-
# file.)
|
2
|
+
class ADLTask < ToolTask
|
3
|
+
# Specifies the directory containing the runtime to use. If not
|
4
|
+
# specified, the runtime directory in the same SDK as the ADL program
|
5
|
+
# will be used. If you move ADL out of its SDK folder, then you must
|
6
|
+
# specify the runtime directory. On Windows, specify the directory
|
7
|
+
# containing the Adobe AIR directory. On Mac OSX, specify the directory
|
8
|
+
# containing Adobe AIR.framework.
|
9
|
+
def runtime=(file)
|
10
|
+
@runtime = file
|
11
|
+
end
|
12
|
+
|
13
|
+
# Turns off debugging support. If used, the application process cannot
|
14
|
+
# connect to the Flash debugger and dialogs for unhandled exceptions are
|
15
|
+
# suppressed.
|
16
|
+
#
|
17
|
+
# Trace statements still print to the console window. Turning off
|
18
|
+
# debugging allows your application to run a little faster and also
|
19
|
+
# emulates the execution mode of an installed application more closely.
|
20
|
+
def nodebug=(boolean)
|
21
|
+
@nodebug = boolean
|
22
|
+
end
|
23
|
+
|
24
|
+
# Assigns the specified value as the publisher ID of the AIR application
|
25
|
+
# for this run. Specifying a temporary publisher ID allows you to test
|
26
|
+
# features of an AIR application, such as communicating over a local
|
27
|
+
# connection, that use the publisher ID to help uniquely identify an
|
28
|
+
# application.
|
29
|
+
#
|
30
|
+
# The final publisher ID is determined by the digital certificate used to
|
31
|
+
# sign the AIR installation file.
|
32
|
+
def pubid=(string)
|
33
|
+
@pubid = string
|
34
|
+
end
|
35
|
+
|
36
|
+
# The application descriptor file.
|
70
37
|
def application_descriptor=(file)
|
71
38
|
@application_descriptor = file
|
72
39
|
end
|
73
40
|
|
74
|
-
# The
|
75
|
-
#
|
76
|
-
#
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
#
|
82
|
-
|
83
|
-
|
84
|
-
@files = files
|
41
|
+
# The root directory of the application to run. If not
|
42
|
+
# specified, the directory containing the application
|
43
|
+
# descriptor file is used.
|
44
|
+
def root_directory=(file)
|
45
|
+
@root_directory = file
|
46
|
+
end
|
47
|
+
|
48
|
+
# Passed to the application as command-line arguments.
|
49
|
+
def arguments=(string)
|
50
|
+
@arguments = string
|
85
51
|
end
|
86
52
|
|
87
53
|
end
|
File without changes
|