sprout-as3-bundle 0.2.9 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|