airake 0.1.12 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/Manifest.txt +19 -8
- data/README.txt +6 -12
- data/app_generators/airake/USAGE +2 -2
- data/app_generators/airake/airake_generator.rb +25 -15
- data/app_generators/airake/templates/README +3 -12
- data/app_generators/browsair/USAGE +5 -0
- data/app_generators/browsair/browsair_generator.rb +91 -0
- data/app_generators/browsair/templates/README +1 -0
- data/app_generators/{airake/templates → shared}/Rakefile +6 -8
- data/app_generators/shared/application.mxml +25 -0
- data/app_generators/{airake/templates → shared}/descriptor.xml +10 -10
- data/app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt +15 -0
- data/app_generators/shared/icons/Web.png +0 -0
- data/bin/browsair +12 -0
- data/config/hoe.rb +1 -1
- data/lib/airake/commands/adl.rb +29 -0
- data/lib/airake/commands/adt.rb +58 -0
- data/lib/airake/commands/amxmlc.rb +52 -0
- data/lib/airake/core_ext/blank.rb +56 -0
- data/lib/airake/project.rb +27 -106
- data/lib/airake/runner.rb +35 -0
- data/lib/airake/tasks/air.rake +62 -8
- data/lib/airake/tasks/deployment.rake +0 -3
- data/lib/airake/version.rb +2 -2
- data/lib/airake.rb +9 -0
- data/test/test_airake_generator.rb +5 -6
- data/test/test_browsair_generator.rb +49 -0
- metadata +26 -12
- data/app_generators/airake/templates/application.mxml +0 -6
- data/log/debug.log +0 -0
- /data/app_generators/{airake/templates → shared}/lib/flexunit-08.30.2007.swc +0 -0
- /data/app_generators/{airake/templates → shared}/test/Test-app.xml +0 -0
- /data/app_generators/{airake/templates → shared}/test/Test.mxml +0 -0
- /data/app_generators/{airake/templates → shared}/test/suite/AllTests.as +0 -0
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.2.1 2007-10-10
|
2
|
+
|
3
|
+
* Created browsair generator
|
4
|
+
* Fixed air:package task
|
5
|
+
* Fixed package icon support; added ASSETS env variable
|
6
|
+
* Added air:certificate task
|
7
|
+
* Default project is a browsair which points to airake resources page
|
8
|
+
|
1
9
|
== 0.1.12 2007-10-08
|
2
10
|
|
3
11
|
* Updated generator test scaffolding to Beta 2
|
data/Manifest.txt
CHANGED
@@ -7,28 +7,38 @@ Rakefile
|
|
7
7
|
app_generators/airake/USAGE
|
8
8
|
app_generators/airake/airake_generator.rb
|
9
9
|
app_generators/airake/templates/README
|
10
|
-
app_generators/airake/templates/Rakefile
|
11
|
-
app_generators/airake/templates/application.mxml
|
12
|
-
app_generators/airake/templates/descriptor.xml
|
13
10
|
app_generators/airake/templates/lib/corelib-08.30.2007.swc
|
14
|
-
app_generators/
|
15
|
-
app_generators/
|
16
|
-
app_generators/
|
17
|
-
app_generators/
|
11
|
+
app_generators/browsair/USAGE
|
12
|
+
app_generators/browsair/browsair_generator.rb
|
13
|
+
app_generators/browsair/templates/README
|
14
|
+
app_generators/shared/Rakefile
|
15
|
+
app_generators/shared/application.mxml
|
16
|
+
app_generators/shared/descriptor.xml
|
17
|
+
app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt
|
18
|
+
app_generators/shared/icons/Web.png
|
19
|
+
app_generators/shared/lib/flexunit-08.30.2007.swc
|
20
|
+
app_generators/shared/test/Test-app.xml
|
21
|
+
app_generators/shared/test/Test.mxml
|
22
|
+
app_generators/shared/test/suite/AllTests.as
|
18
23
|
bin/airake
|
24
|
+
bin/browsair
|
19
25
|
config/hoe.rb
|
20
26
|
config/requirements.rb
|
21
27
|
lib/airake.rb
|
28
|
+
lib/airake/commands/adl.rb
|
29
|
+
lib/airake/commands/adt.rb
|
30
|
+
lib/airake/commands/amxmlc.rb
|
31
|
+
lib/airake/core_ext/blank.rb
|
22
32
|
lib/airake/daemonize.rb
|
23
33
|
lib/airake/fcsh.rb
|
24
34
|
lib/airake/fcshd.rb
|
25
35
|
lib/airake/project.rb
|
36
|
+
lib/airake/runner.rb
|
26
37
|
lib/airake/tasks.rb
|
27
38
|
lib/airake/tasks/air.rake
|
28
39
|
lib/airake/tasks/deployment.rake
|
29
40
|
lib/airake/tasks/fcsh.rake
|
30
41
|
lib/airake/version.rb
|
31
|
-
log/debug.log
|
32
42
|
script/destroy
|
33
43
|
script/generate
|
34
44
|
setup.rb
|
@@ -37,5 +47,6 @@ tasks/environment.rake
|
|
37
47
|
tasks/website.rake
|
38
48
|
test/test_airake.rb
|
39
49
|
test/test_airake_generator.rb
|
50
|
+
test/test_browsair_generator.rb
|
40
51
|
test/test_generator_helper.rb
|
41
52
|
test/test_helper.rb
|
data/README.txt
CHANGED
@@ -42,16 +42,13 @@ To include adl and adt (from AIR SDK):
|
|
42
42
|
|
43
43
|
# Testing
|
44
44
|
rake air:test
|
45
|
+
|
46
|
+
# Create certificate (Specify ENV["CERTIFICATE"] = "path/to/certificate.pfx")
|
47
|
+
rake air:certificate
|
45
48
|
|
46
49
|
# Package AIR file
|
47
50
|
rake air:package
|
48
51
|
|
49
|
-
== Deprecated tasks
|
50
|
-
|
51
|
-
Renamed air:start_fcshd to fcsh:start
|
52
|
-
Renamed air:stop_fcshd to fcsh:stop
|
53
|
-
Renamed air:restart_fcshd to fcsh:restart
|
54
|
-
|
55
52
|
== Adding other tasks
|
56
53
|
|
57
54
|
Add tasks to the rakefile, for example:
|
@@ -68,7 +65,7 @@ This is experimental. In the Rakefile, specify:
|
|
68
65
|
|
69
66
|
# Override default settings, this is experimental
|
70
67
|
# cwd = File.expand_path(File.dirname(__FILE__))
|
71
|
-
#ENV["
|
68
|
+
#ENV["AMXMLC_PATH"] = "mxmlc"
|
72
69
|
#ENV["ADT_PATH"] = "adt"
|
73
70
|
#ENV["BIN_DIR"] = "#{cwd}/bin"
|
74
71
|
#ENV["SRC_DIR"] = "#{cwd}/src"
|
@@ -77,9 +74,6 @@ This is experimental. In the Rakefile, specify:
|
|
77
74
|
#ENV["APPXML_PATH"] = "#{cwd}/src/MyProject-app.xml"
|
78
75
|
#ENV["AIR_PATH"] = "#{cwd}/bin/MyProject.air"
|
79
76
|
#ENV["SWF_PATH"] = "#{cwd}/bin/MyProject.swf"
|
80
|
-
#ENV["
|
77
|
+
#ENV["AMXMLC_EXTRA_OPTS"] = ...
|
81
78
|
#ENV["ADL_EXTRA_OPTS"] = ...
|
82
|
-
#ENV["ADT_EXTRA_OPTS"] = ...
|
83
|
-
#ENV["MXMLC_COMMAND"] = ...
|
84
|
-
#ENV["ADL_COMMAND"] = ...
|
85
|
-
#ENV["ADT_COMMAND"] = ...
|
79
|
+
#ENV["ADT_EXTRA_OPTS"] = ...
|
data/app_generators/airake/USAGE
CHANGED
@@ -1,37 +1,48 @@
|
|
1
1
|
class AirakeGenerator < RubiGen::Base
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
attr_reader :app_name
|
3
|
+
attr_reader :app_name, :title, :url, :description
|
6
4
|
|
7
5
|
def initialize(runtime_args, runtime_options = {})
|
8
6
|
super
|
9
7
|
usage if args.empty? || args.size < 1
|
10
8
|
@destination_root = File.expand_path(args.shift)
|
11
9
|
@app_name = File.basename(@destination_root).camelize
|
10
|
+
@title = @app_name
|
11
|
+
@url = "http://airake.rubyforge.org/resources.html"
|
12
|
+
@description = "Put description here"
|
12
13
|
extract_options
|
13
14
|
end
|
14
15
|
|
15
|
-
def manifest
|
16
|
+
def manifest
|
16
17
|
record do |m|
|
17
18
|
# Ensure appropriate folder(s) exists
|
18
19
|
m.directory ''
|
19
20
|
BASEDIRS.each { |path| m.directory path }
|
20
21
|
|
21
|
-
# Create stubs
|
22
|
-
m.template "Rakefile", "Rakefile"
|
23
22
|
m.file "README", "README"
|
24
|
-
m.
|
25
|
-
|
23
|
+
m.file "lib/corelib-08.30.2007.swc", "lib/corelib-08.30.2007.swc"
|
24
|
+
|
25
|
+
# Shared templates
|
26
|
+
shared_path = "../../shared"
|
26
27
|
|
27
28
|
# Lib
|
28
|
-
m.file "lib/
|
29
|
-
m.file "lib/flexunit-08.30.2007.swc", "lib/flexunit-08.30.2007.swc"
|
29
|
+
m.file "#{shared_path}/lib/flexunit-08.30.2007.swc", "lib/flexunit-08.30.2007.swc"
|
30
30
|
|
31
31
|
# Test
|
32
|
-
m.file "test/Test-app.xml", "test/Test-app.xml"
|
33
|
-
m.file "test/Test.mxml", "test/Test.mxml"
|
34
|
-
m.
|
32
|
+
m.file "#{shared_path}/test/Test-app.xml", "test/Test-app.xml"
|
33
|
+
m.file "#{shared_path}/test/Test.mxml", "test/Test.mxml"
|
34
|
+
m.directory "test/suite"
|
35
|
+
m.file "#{shared_path}/test/suite/AllTests.as", "test/suite/AllTests.as"
|
36
|
+
|
37
|
+
m.template "#{shared_path}/Rakefile", "Rakefile"
|
38
|
+
m.template "#{shared_path}/descriptor.xml", "src/#{app_name}-app.xml"
|
39
|
+
m.template "#{shared_path}/application.mxml", "src/#{app_name}.mxml"
|
40
|
+
|
41
|
+
# Icons
|
42
|
+
m.directory "src/assets/app_icons"
|
43
|
+
m.file "#{shared_path}/icons/Web.png", "src/assets/app_icons/icon_128.png"
|
44
|
+
m.file "#{shared_path}/icons/MouseRunnerDotComGraphicsLicense.txt", "src/assets/app_icons/MouseRunnerDotComGraphicsLicense.txt"
|
45
|
+
|
35
46
|
end
|
36
47
|
end
|
37
48
|
|
@@ -40,7 +51,7 @@ class AirakeGenerator < RubiGen::Base
|
|
40
51
|
<<-EOS
|
41
52
|
Creates an AIR project scaffold.
|
42
53
|
|
43
|
-
USAGE: #{spec.name} path/to/AppName
|
54
|
+
USAGE: #{spec.name} [path/to/AppName]
|
44
55
|
EOS
|
45
56
|
end
|
46
57
|
|
@@ -69,6 +80,5 @@ EOS
|
|
69
80
|
lib
|
70
81
|
src
|
71
82
|
test
|
72
|
-
test/suite
|
73
83
|
)
|
74
84
|
end
|
@@ -42,12 +42,6 @@ To include adl and adt (from AIR SDK):
|
|
42
42
|
# Package AIR file
|
43
43
|
rake air:package
|
44
44
|
|
45
|
-
== Deprecated tasks
|
46
|
-
|
47
|
-
Renamed air:start_fcshd to fcsh:start
|
48
|
-
Renamed air:stop_fcshd to fcsh:stop
|
49
|
-
Renamed air:restart_fcshd to fcsh:restart
|
50
|
-
|
51
45
|
== Adding other tasks
|
52
46
|
|
53
47
|
Add tasks to the rakefile, for example:
|
@@ -64,7 +58,7 @@ This is experimental. In the Rakefile, specify:
|
|
64
58
|
|
65
59
|
# Override default settings, this is experimental
|
66
60
|
# cwd = File.expand_path(File.dirname(__FILE__))
|
67
|
-
#ENV["
|
61
|
+
#ENV["AMXMLC_PATH"] = "mxmlc"
|
68
62
|
#ENV["ADT_PATH"] = "adt"
|
69
63
|
#ENV["BIN_DIR"] = "#{cwd}/bin"
|
70
64
|
#ENV["SRC_DIR"] = "#{cwd}/src"
|
@@ -73,9 +67,6 @@ This is experimental. In the Rakefile, specify:
|
|
73
67
|
#ENV["APPXML_PATH"] = "#{cwd}/src/MyProject-app.xml"
|
74
68
|
#ENV["AIR_PATH"] = "#{cwd}/bin/MyProject.air"
|
75
69
|
#ENV["SWF_PATH"] = "#{cwd}/bin/MyProject.swf"
|
76
|
-
#ENV["
|
70
|
+
#ENV["AMXMLC_EXTRA_OPTS"] = ...
|
77
71
|
#ENV["ADL_EXTRA_OPTS"] = ...
|
78
|
-
#ENV["ADT_EXTRA_OPTS"] = ...
|
79
|
-
#ENV["MXMLC_COMMAND"] = ...
|
80
|
-
#ENV["ADL_COMMAND"] = ...
|
81
|
-
#ENV["ADT_COMMAND"] = ...
|
72
|
+
#ENV["ADT_EXTRA_OPTS"] = ...
|
@@ -0,0 +1,91 @@
|
|
1
|
+
class BrowsairGenerator < RubiGen::Base
|
2
|
+
|
3
|
+
attr_reader :app_name, :url, :title, :description, :icon_src_path
|
4
|
+
|
5
|
+
def initialize(runtime_args, runtime_options = {})
|
6
|
+
super
|
7
|
+
usage if args.empty? || args.size < 2
|
8
|
+
@destination_root = File.expand_path(args.shift)
|
9
|
+
@app_name = File.basename(@destination_root)
|
10
|
+
@url = args.shift
|
11
|
+
@title = "#{@app_name} - #{@url}"
|
12
|
+
@description = "AIR Browser for #{@url}"
|
13
|
+
@icon_src_path = File.expand_path(args.shift) unless args.empty?
|
14
|
+
extract_options
|
15
|
+
end
|
16
|
+
|
17
|
+
def manifest
|
18
|
+
record do |m|
|
19
|
+
# Ensure appropriate folder(s) exists
|
20
|
+
m.directory ''
|
21
|
+
BASEDIRS.each { |path| m.directory path }
|
22
|
+
|
23
|
+
m.file "README", "README"
|
24
|
+
|
25
|
+
# Shared templates
|
26
|
+
shared_path = "../../shared"
|
27
|
+
|
28
|
+
# Lib
|
29
|
+
m.file "#{shared_path}/lib/flexunit-08.30.2007.swc", "lib/flexunit-08.30.2007.swc"
|
30
|
+
|
31
|
+
# Test
|
32
|
+
m.file "#{shared_path}/test/Test-app.xml", "test/Test-app.xml"
|
33
|
+
m.file "#{shared_path}/test/Test.mxml", "test/Test.mxml"
|
34
|
+
m.directory "test/suite"
|
35
|
+
m.file "#{shared_path}/test/suite/AllTests.as", "test/suite/AllTests.as"
|
36
|
+
|
37
|
+
# Basic
|
38
|
+
m.template "#{shared_path}/Rakefile", "Rakefile"
|
39
|
+
m.template "#{shared_path}/descriptor.xml", "src/#{app_name}-app.xml"
|
40
|
+
m.template "#{shared_path}/application.mxml", "src/#{app_name}.mxml"
|
41
|
+
|
42
|
+
# Icons
|
43
|
+
m.directory "src/assets/app_icons"
|
44
|
+
|
45
|
+
if @icon_src_path.blank?
|
46
|
+
m.file "#{shared_path}/icons/Web.png", "src/assets/app_icons/icon_128.png"
|
47
|
+
m.file "#{shared_path}/icons/MouseRunnerDotComGraphicsLicense.txt", "src/assets/app_icons/MouseRunnerDotComGraphicsLicense.txt"
|
48
|
+
else
|
49
|
+
icon_dest_path = destination_path("src/assets/app_icons/icon_128.png")
|
50
|
+
FileUtils.cp(icon_src_path, icon_dest_path)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
protected
|
57
|
+
def banner
|
58
|
+
<<-EOS
|
59
|
+
Create an AIR browser for a specific URL.
|
60
|
+
|
61
|
+
USAGE: #{spec.name} [name] [http://the.url] [path/to/icon_128.png (optional)]
|
62
|
+
EOS
|
63
|
+
end
|
64
|
+
|
65
|
+
def add_options!(opts)
|
66
|
+
opts.separator ''
|
67
|
+
opts.separator 'Options:'
|
68
|
+
# For each option below, place the default
|
69
|
+
# at the top of the file next to "default_options"
|
70
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
71
|
+
# "Some comment about this option",
|
72
|
+
# "Default: none") { |options[:author]| }
|
73
|
+
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
74
|
+
end
|
75
|
+
|
76
|
+
def extract_options
|
77
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
78
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
79
|
+
# raw instance variable value.
|
80
|
+
# @author = options[:author]
|
81
|
+
end
|
82
|
+
|
83
|
+
# Installation skeleton. Intermediate directories are automatically
|
84
|
+
# created so don't sweat their absence here.
|
85
|
+
BASEDIRS = %w(
|
86
|
+
bin
|
87
|
+
lib
|
88
|
+
src
|
89
|
+
test
|
90
|
+
)
|
91
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Browser AIR application
|
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'airake'
|
3
3
|
|
4
|
+
# Specify certificate path
|
5
|
+
ENV["CERTIFICATE"] ||= "cert.pfx"
|
6
|
+
|
7
|
+
# dirname $0
|
4
8
|
ENV["BASE_DIR"] ||= File.expand_path(File.dirname(__FILE__))
|
5
9
|
|
6
10
|
# MXML options
|
7
11
|
ENV["MXML"] ||= "src/<%= app_name %>.mxml"
|
8
12
|
ENV["MXML_TEST"] ||= "test/Test.mxml"
|
9
13
|
|
10
|
-
#
|
11
|
-
|
12
|
-
# Uncomment for custom FCSH settings
|
13
|
-
#ENV["FCSH_IP"] ||= "127.0.0.1"
|
14
|
-
#ENV["FCSH_PORT"] ||= "20569"
|
15
|
-
|
16
|
-
# For debug
|
17
|
-
#ENV["DEBUG"] = "true"
|
14
|
+
# Assets to package
|
15
|
+
ENV["ASSETS"] ||= "src/assets"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" showStatusBar="false">
|
3
|
+
|
4
|
+
<mx:VBox width="100%" height="100%" backgroundColor="#FFFFFF">
|
5
|
+
|
6
|
+
<mx:HBox id="buttons" width="100%" paddingLeft="5" paddingTop="5"
|
7
|
+
borderColor="#CCCCCC" borderSides="bottom" borderThickness="2" borderStyle="solid">
|
8
|
+
|
9
|
+
<mx:Button label="Back" click="html.htmlControl.historyBack()" />
|
10
|
+
<mx:Button label="Forward" click="html.htmlControl.historyForward()" />
|
11
|
+
<mx:Button label="Home" click="html.location = '<%= url %>'" />
|
12
|
+
<!-- <mx:Button label="Cancel" click="html.htmlControl.cancelLoad()" /> -->
|
13
|
+
<!-- <mx:Label text="{html.location}" width="100%" /> -->
|
14
|
+
|
15
|
+
<mx:HBox width="100%" horizontalAlign="right" paddingBottom="5" paddingRight="5">
|
16
|
+
<mx:Button label="Hide" click="buttons.height = 0" />
|
17
|
+
</mx:HBox>
|
18
|
+
</mx:HBox>
|
19
|
+
|
20
|
+
<mx:VBox width="100%" height="100%" >
|
21
|
+
<mx:HTML id="html" width="100%" height="100%" location="<%= url %>" />
|
22
|
+
</mx:VBox>
|
23
|
+
</mx:VBox>
|
24
|
+
|
25
|
+
</mx:WindowedApplication>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<application xmlns="http://ns.adobe.com/air/application/1.0.M5" appId="com.
|
2
|
+
<application xmlns="http://ns.adobe.com/air/application/1.0.M5" appId="com.ducktyper.browsair.<%= app_name %>" version="0.0.1">
|
3
3
|
|
4
4
|
<!--
|
5
5
|
AIR Application Descriptor File:
|
@@ -34,12 +34,12 @@
|
|
34
34
|
<!--
|
35
35
|
The title displayed in the AIR application installer.
|
36
36
|
-->
|
37
|
-
<title
|
37
|
+
<title><%= title %></title>
|
38
38
|
|
39
39
|
<!--
|
40
40
|
The description displayed in the AIR application installer.
|
41
41
|
-->
|
42
|
-
<description
|
42
|
+
<description><%= description %></description>
|
43
43
|
|
44
44
|
<!--
|
45
45
|
The application copyright information.
|
@@ -51,9 +51,9 @@
|
|
51
51
|
-->
|
52
52
|
<initialWindow>
|
53
53
|
<!--
|
54
|
-
The title
|
54
|
+
The window title.
|
55
55
|
-->
|
56
|
-
<title
|
56
|
+
<title><%= title %></title>
|
57
57
|
|
58
58
|
<!--
|
59
59
|
The main content file of the application, which must be a SWF or HTML
|
@@ -118,12 +118,12 @@
|
|
118
118
|
<!-- <height>500</height> -->
|
119
119
|
<!-- <x>150</x> -->
|
120
120
|
<!-- <y>150</y> -->
|
121
|
-
<x>100</x>
|
122
|
-
<y>100</y>
|
123
|
-
<width>600</width>
|
124
|
-
<height>400</height>
|
125
121
|
<!-- <minSize>300 300</minSize> -->
|
126
122
|
<!-- <maxSize>800 800</maxSize> -->
|
123
|
+
<width>1024</width>
|
124
|
+
<height>768</height>
|
125
|
+
<x>100</x>
|
126
|
+
<y>50</y>
|
127
127
|
</initialWindow>
|
128
128
|
|
129
129
|
<!--
|
@@ -154,7 +154,7 @@
|
|
154
154
|
<!-- <image16x16>icons/AIRApp_16.png</image16x16> -->
|
155
155
|
<!-- <image32x32>icons/AIRApp_32.png</image32x32> -->
|
156
156
|
<!-- <image48x48>icons/AIRApp_48.png</image48x48> -->
|
157
|
-
|
157
|
+
<image128x128>src/assets/app_icons/icon_128.png</image128x128>
|
158
158
|
</icon>
|
159
159
|
|
160
160
|
<!--
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Thanks for downloading ColoCons. While I want you to enjoy these icons for free, I ask that you please abide by the terms that they are licensed under.
|
2
|
+
Enjoy and come back to MouseRunner.com for all free content and resources.
|
3
|
+
|
4
|
+
|
5
|
+
The graphics contained in these files are licensed under the Creative Commons Attribution-ShareAlike 2.5 License
|
6
|
+
|
7
|
+
Furthermore,
|
8
|
+
You may not claim the works as your own.
|
9
|
+
You must provide a link back to www.MouseRunner.com when using on a website, for commercial purposes, and for applications.
|
10
|
+
|
11
|
+
Visit the address below to learn more about the Creative Commons license.
|
12
|
+
http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode
|
13
|
+
|
14
|
+
|
15
|
+
|
Binary file
|
data/bin/browsair
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubigen'
|
3
|
+
|
4
|
+
if %w(-v --version).include? ARGV.first
|
5
|
+
require 'newgem/version'
|
6
|
+
puts "#{File.basename($0)} #{Newgem::VERSION::STRING}"
|
7
|
+
exit(0)
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'rubigen/scripts/generate'
|
11
|
+
RubiGen::Base.use_application_sources! :airake
|
12
|
+
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'browsair')
|
data/config/hoe.rb
CHANGED
@@ -2,7 +2,7 @@ require 'airake/version'
|
|
2
2
|
|
3
3
|
AUTHOR = 'Gabriel Handford, Min Kim'
|
4
4
|
EMAIL = "gabrielh@gmail.com"
|
5
|
-
DESCRIPTION = "Adobe AIR tasks"
|
5
|
+
DESCRIPTION = "Adobe AIR generators and tasks"
|
6
6
|
GEM_NAME = 'airake'
|
7
7
|
RUBYFORGE_PROJECT = 'airake' # The unix name for your project
|
8
8
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Airake
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Adl
|
6
|
+
|
7
|
+
attr_reader :project, :path, :extra_opts
|
8
|
+
|
9
|
+
def initialize(project, options = {})
|
10
|
+
@project = project
|
11
|
+
@path = options[:adl_path] || "adl"
|
12
|
+
@extra_opts = options[:adl_extra_opts]
|
13
|
+
end
|
14
|
+
|
15
|
+
# Get the ADL command
|
16
|
+
def launch
|
17
|
+
command = []
|
18
|
+
command << @path
|
19
|
+
command << @extra_opts
|
20
|
+
command << project.appxml_path
|
21
|
+
command << project.base_dir
|
22
|
+
command.compact.join(" ")
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Airake
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Adt
|
6
|
+
|
7
|
+
attr_reader :project, :path, :certificate, :extra_opts, :assets
|
8
|
+
|
9
|
+
def initialize(project, options = {})
|
10
|
+
@project = project
|
11
|
+
@path = options[:adt_path] || "adt"
|
12
|
+
@certificate = options[:certificate]
|
13
|
+
@extra_opts = options[:adt_extra_opts]
|
14
|
+
@assets = options[:assets]
|
15
|
+
end
|
16
|
+
|
17
|
+
# Get the ADT command
|
18
|
+
def package
|
19
|
+
command = []
|
20
|
+
command << @path
|
21
|
+
command << @extra_opts
|
22
|
+
command << "-package"
|
23
|
+
command << "-certificate #{@certificate}"
|
24
|
+
command << project.relative_path(project.air_path)
|
25
|
+
command << project.relative_path(project.appxml_path)
|
26
|
+
command << project.relative_path(project.swf_path)
|
27
|
+
command << @assets
|
28
|
+
command.compact.join(" ")
|
29
|
+
end
|
30
|
+
|
31
|
+
# Generate a certificate
|
32
|
+
#
|
33
|
+
# cn:: Common name
|
34
|
+
# pfx_file:: Output certificate path
|
35
|
+
# key_type:: 1024-RSA, 2048-RSA
|
36
|
+
# password:: Password
|
37
|
+
# optionals:: :ou, :o, :c
|
38
|
+
#
|
39
|
+
# Example result: adt -certificate -cn ADigitalID 1024-RSA SigningCert.pfx 39#wnetx3tl
|
40
|
+
def certificate(cn, pfx_file, key_type, password, optionals = {})
|
41
|
+
command = []
|
42
|
+
command << @path
|
43
|
+
command << "-certificate"
|
44
|
+
command << "-cn #{cn}"
|
45
|
+
command << "-ou #{optionals[:ou]}" if !optionals[:ou].blank?
|
46
|
+
command << "-o #{optionals[:o]}" if !optionals[:o].blank?
|
47
|
+
command << "-c #{optionals[:c]}" if !optionals[:c].blank?
|
48
|
+
command << key_type
|
49
|
+
command << pfx_file
|
50
|
+
command << password
|
51
|
+
command.compact.join(" ")
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Airake
|
2
|
+
|
3
|
+
module Commands
|
4
|
+
|
5
|
+
class Amxmlc
|
6
|
+
|
7
|
+
attr_reader :project, :path, :extra_opts
|
8
|
+
|
9
|
+
def initialize(project, options = {})
|
10
|
+
@project = project
|
11
|
+
@path = options[:amxmlc_path] || "amxmlc"
|
12
|
+
@extra_opts = options[:amxmlc_extra_opts]
|
13
|
+
end
|
14
|
+
|
15
|
+
# Get the amxmlc command
|
16
|
+
def compile
|
17
|
+
command = []
|
18
|
+
command << @path
|
19
|
+
#command << "+configname=air"
|
20
|
+
command << source_path_option
|
21
|
+
command << library_path_option
|
22
|
+
command << "-output #{project.swf_path}"
|
23
|
+
command << project.debug_option
|
24
|
+
command << @extra_opts
|
25
|
+
command << "-disable-incremental-optimizations=true"
|
26
|
+
command << "-- #{project.mxml_path}"
|
27
|
+
command.compact.join(" ")
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
def source_path_option
|
33
|
+
# List of directories in lib/ for source_path +=
|
34
|
+
lib_source_paths = Dir["#{project.lib_dir}/*"].collect { |f| f if File.directory?(f) }.compact
|
35
|
+
lib_source_paths << project.test_dir if File.directory?(project.test_dir)
|
36
|
+
lib_source_paths << project.src_dir if File.directory?(project.src_dir)
|
37
|
+
|
38
|
+
source_paths ||= lib_source_paths
|
39
|
+
source_paths.empty? ? "" : "-source-path #{source_paths.join(" ")}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def library_path_option
|
43
|
+
library_paths = []
|
44
|
+
library_paths << project.lib_dir if File.directory?(project.lib_dir)
|
45
|
+
library_paths.empty? ? "" : "-library-path+=#{library_paths.join(" ")}"
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Object
|
2
|
+
# An object is blank if it's nil, empty, or a whitespace string.
|
3
|
+
# For example, "", " ", nil, [], and {} are blank.
|
4
|
+
#
|
5
|
+
# This simplifies
|
6
|
+
# if !address.nil? && !address.empty?
|
7
|
+
# to
|
8
|
+
# if !address.blank?
|
9
|
+
def blank?
|
10
|
+
if respond_to?(:empty?) && respond_to?(:strip)
|
11
|
+
empty? or strip.empty?
|
12
|
+
elsif respond_to?(:empty?)
|
13
|
+
empty?
|
14
|
+
else
|
15
|
+
!self
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class NilClass #:nodoc:
|
21
|
+
def blank?
|
22
|
+
true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class FalseClass #:nodoc:
|
27
|
+
def blank?
|
28
|
+
true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class TrueClass #:nodoc:
|
33
|
+
def blank?
|
34
|
+
false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Array #:nodoc:
|
39
|
+
alias_method :blank?, :empty?
|
40
|
+
end
|
41
|
+
|
42
|
+
class Hash #:nodoc:
|
43
|
+
alias_method :blank?, :empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
class String #:nodoc:
|
47
|
+
def blank?
|
48
|
+
empty? || strip.empty?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class Numeric #:nodoc:
|
53
|
+
def blank?
|
54
|
+
false
|
55
|
+
end
|
56
|
+
end
|
data/lib/airake/project.rb
CHANGED
@@ -8,13 +8,12 @@ module Airake
|
|
8
8
|
attr_reader :base_dir, :bin_dir, :src_dir, :lib_dir, :test_dir
|
9
9
|
attr_reader :mxml_path, :appxml_path, :air_path, :swf_path
|
10
10
|
attr_reader :debug
|
11
|
+
attr_reader :options
|
12
|
+
attr_reader :assets
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
Options = [ :mxmlc_path, :adt_path, :bin_dir, :src_dir, :lib_dir, :test_dir,
|
16
|
-
:appxml_path, :air_path, :swf_path, :debug, :mxmlc_command, :adt_command,
|
17
|
-
:adl_command, :mxmlc_extra_opts, :adl_extra_opts, :adt_extra_opts ]
|
14
|
+
# Options to override defaults
|
15
|
+
Options = [ :certificate, :assets, :amxmlc_path, :adt_path, :adt_path, :bin_dir, :src_dir, :lib_dir, :test_dir,
|
16
|
+
:appxml_path, :air_path, :swf_path, :debug, :amxmlc_extra_opts, :adl_extra_opts, :adt_extra_opts ]
|
18
17
|
|
19
18
|
# Construct project
|
20
19
|
#
|
@@ -24,50 +23,42 @@ module Airake
|
|
24
23
|
def initialize(base_dir, mxml_path, options = {})
|
25
24
|
@base_dir = base_dir
|
26
25
|
@mxml_path = mxml_path
|
26
|
+
@options = options
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
@adl_path = options[:adl] || "adl"
|
31
|
-
|
28
|
+
raise ArgumentError, "Invalid MXML path: #{mxml_path}" if mxml_path.blank?
|
29
|
+
|
32
30
|
@bin_dir = options[:bin_dir] || File.join(base_dir, "bin")
|
33
31
|
@src_dir = options[:src_dir] || File.join(base_dir, "src")
|
34
32
|
@lib_dir = options[:lib_dir] || File.join(base_dir, "lib")
|
35
33
|
@test_dir = options[:test_dir] || File.join(base_dir, "test")
|
36
|
-
|
34
|
+
|
37
35
|
@project_name = File.basename(@mxml_path, ".mxml")
|
38
|
-
mxml_dir = File.expand_path(File.dirname(@mxml_path))
|
36
|
+
mxml_dir = File.expand_path(File.dirname(@mxml_path))
|
39
37
|
@appxml_path = options[:appxml_path] || File.join(mxml_dir, "#{project_name}-app.xml")
|
40
|
-
|
38
|
+
|
41
39
|
# Dest package files
|
42
40
|
@air_path = options[:air_path] || File.join(@bin_dir, "#{project_name}.air")
|
43
41
|
@swf_path = options[:swf_path] || File.join(@bin_dir, "#{project_name}.swf")
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
@mxmlc_extra_opts = options[:mxmlc_extra_opts]
|
48
|
-
@adl_extra_opts = options[:adl_extra_opts]
|
49
|
-
@adt_extra_opts = options[:adt_extra_opts]
|
50
|
-
|
51
|
-
@mxmlc_command = options[:mxmlc_command] || load_mxmlc_command
|
52
|
-
@adt_command = options[:adt_command] || load_adt_command
|
53
|
-
@adl_command = options[:adl_command] || load_adl_command
|
43
|
+
# Debug options
|
44
|
+
@debug = options[:debug].is_a?(TrueClass) || options[:debug] == "true"
|
54
45
|
end
|
55
46
|
|
56
|
-
#
|
57
|
-
def
|
58
|
-
|
47
|
+
# Flex compiler command
|
48
|
+
def amxmlc
|
49
|
+
Airake::Commands::Amxmlc.new(self, @options)
|
59
50
|
end
|
60
|
-
|
61
|
-
#
|
62
|
-
def
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
# Run the Adobe Debug Launcher
|
67
|
-
def run_adl
|
68
|
-
run(adl_command)
|
51
|
+
|
52
|
+
# ADL command
|
53
|
+
def adl
|
54
|
+
Airake::Commands::Adl.new(self, @options)
|
69
55
|
end
|
70
56
|
|
57
|
+
# ADT command
|
58
|
+
def adt
|
59
|
+
Airake::Commands::Adt.new(self, @options)
|
60
|
+
end
|
61
|
+
|
71
62
|
# Create project using parameters from rake ENV
|
72
63
|
#
|
73
64
|
# You can set any of the options via ENV; just upcase it. <tt>:foo_bar => ENV["FOO_BAR"]</tt>
|
@@ -83,58 +74,10 @@ module Airake
|
|
83
74
|
env_key = option_key.to_s.upcase
|
84
75
|
options[option_key] = env[env_key] if env.has_key?(env_key)
|
85
76
|
end
|
86
|
-
puts "Using options: #{options.inspect}" unless options.empty?
|
77
|
+
#puts "Using options: #{options.inspect}" unless options.empty?
|
87
78
|
self.new(base_dir, mxml, options)
|
88
79
|
end
|
89
80
|
|
90
|
-
protected
|
91
|
-
|
92
|
-
# Get the mxmlc command
|
93
|
-
def load_mxmlc_command
|
94
|
-
command = []
|
95
|
-
command << @mxmlc_path
|
96
|
-
command << "+configname=air"
|
97
|
-
command << source_path_option
|
98
|
-
command << "-library-path+=#{@lib_dir}"
|
99
|
-
command << "-output #{@swf_path}"
|
100
|
-
command << debug_option
|
101
|
-
command << @mxmlc_extra_opts
|
102
|
-
command << "-disable-incremental-optimizations=true"
|
103
|
-
command << "-- #{@mxml_path}"
|
104
|
-
command.compact.join(" ")
|
105
|
-
end
|
106
|
-
|
107
|
-
# Get the ADT command
|
108
|
-
def load_adt_command
|
109
|
-
command = []
|
110
|
-
command << @adt_path
|
111
|
-
command << @adt_extra_opts
|
112
|
-
command << "-package #{relative_path(@air_path)}"
|
113
|
-
command << relative_path(@appxml_path)
|
114
|
-
command << relative_path(@swf_path)
|
115
|
-
command.compact.join(" ")
|
116
|
-
end
|
117
|
-
|
118
|
-
# Get the ADL command
|
119
|
-
def load_adl_command
|
120
|
-
command = []
|
121
|
-
command << @adl_path
|
122
|
-
command << @adl_extra_opts
|
123
|
-
command << @appxml_path
|
124
|
-
command << @base_dir
|
125
|
-
command.compact.join(" ")
|
126
|
-
end
|
127
|
-
|
128
|
-
# List of directories in lib/ for source_path +=
|
129
|
-
def lib_source_paths
|
130
|
-
Dir["#{@lib_dir}/*"].collect { |f| f if File.directory?(f) }.compact + [ @test_dir, @src_dir ]
|
131
|
-
end
|
132
|
-
|
133
|
-
def source_path_option
|
134
|
-
@source_paths ||= lib_source_paths
|
135
|
-
@source_paths.empty? ? "" : "-source-path #{@source_paths.join(" ")}"
|
136
|
-
end
|
137
|
-
|
138
81
|
def debug_option
|
139
82
|
"-debug=#{@debug}" if @debug
|
140
83
|
end
|
@@ -144,28 +87,6 @@ module Airake
|
|
144
87
|
Pathname.new(path).relative_path_from(Pathname.new(@base_dir))
|
145
88
|
end
|
146
89
|
|
147
|
-
# Handle system command failure
|
148
|
-
def fail(cmd, error_status)
|
149
|
-
fail_message = <<-EOS
|
150
|
-
|
151
|
-
The '#{cmd.split.first}' command failed to run. This could be because this executable isn't in the path.
|
152
|
-
|
153
|
-
To include mxmlc and fcsh:
|
154
|
-
export PATH="/path_to/flex3sdk_b2_100107/bin:$PATH"
|
155
|
-
|
156
|
-
To include adl and adt (from AIR SDK):
|
157
|
-
export PATH="/path_to/air_sdk/bin:$PATH"
|
158
|
-
|
159
|
-
EOS
|
160
|
-
#puts fail_message if error_status != 256 && error_status != 4096
|
161
|
-
raise "[#{error_status}] Failed to run command: #{cmd}"
|
162
|
-
end
|
163
|
-
|
164
|
-
# Run the (system) command
|
165
|
-
def run(cmd)
|
166
|
-
puts "Running: #{cmd}"
|
167
|
-
system cmd or fail(cmd, $?)
|
168
|
-
end
|
169
|
-
|
170
90
|
end
|
91
|
+
|
171
92
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Airake
|
2
|
+
|
3
|
+
class Runner
|
4
|
+
|
5
|
+
class << self
|
6
|
+
# Handle system command failure
|
7
|
+
def fail(cmd, error_status)
|
8
|
+
# fail_message = <<-EOS
|
9
|
+
#
|
10
|
+
# The '#{cmd.split.first}' command failed to run. This could be because this executable isn't in the path.
|
11
|
+
#
|
12
|
+
# To include mxmlc and fcsh:
|
13
|
+
# export PATH="/path_to/flex3sdk_b2_100107/bin:$PATH"
|
14
|
+
#
|
15
|
+
# To include adl and adt (from AIR SDK):
|
16
|
+
# export PATH="/path_to/air_sdk/bin:$PATH"
|
17
|
+
#
|
18
|
+
# EOS
|
19
|
+
# puts fail_message if error_status != 256 && error_status != 4096
|
20
|
+
raise "[#{error_status}] Failed to run command: #{cmd}"
|
21
|
+
end
|
22
|
+
|
23
|
+
# Run the command using system(..)
|
24
|
+
def run(command, method, *args)
|
25
|
+
cmd = command.send(method, *args)
|
26
|
+
|
27
|
+
puts "Running: #{cmd}"
|
28
|
+
system cmd or fail(cmd, $?)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/lib/airake/tasks/air.rake
CHANGED
@@ -5,10 +5,10 @@ namespace :air do
|
|
5
5
|
begin
|
6
6
|
project = Airake::Project.new_from_rake(ENV)
|
7
7
|
fcsh = PatternPark::FCSH.new_from_rake(ENV)
|
8
|
-
fcsh.execute([ project.base_dir, project.
|
8
|
+
fcsh.execute([ project.base_dir, project.amxmlc.compile ])
|
9
9
|
rescue PatternPark::FCSHConnectError => e
|
10
10
|
puts "Cannot connect to FCSHD (start by running: rake fcsh:start); Continuing compilation..."
|
11
|
-
project.
|
11
|
+
Airake::Runner.run(project.amxmlc, :compile)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -16,24 +16,78 @@ namespace :air do
|
|
16
16
|
task :test do
|
17
17
|
ENV["DEBUG"] = "true" unless ENV.has_key?("DEBUG")
|
18
18
|
test_project = Airake::Project.new_from_rake(ENV, true)
|
19
|
-
test_project.
|
20
|
-
test_project.
|
19
|
+
Airake::Runner.run(test_project.amxmlc, :compile)
|
20
|
+
Airake::Runner.run(test_project.adl, :launch)
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Generate certificate"
|
24
|
+
task :certificate do
|
25
|
+
pfx_file = ENV["CERTIFICATE"]
|
26
|
+
|
27
|
+
if pfx_file.blank? || pfx_file == "path/to/certificate.pfx"
|
28
|
+
print "Certificate file (to create; e.g. cert.pfx): "
|
29
|
+
pfx_file = STDIN.gets.chomp!
|
30
|
+
end
|
31
|
+
|
32
|
+
if File.exist?(pfx_file)
|
33
|
+
raise "Certificate file exists at '#{pfx_file}'. If you want to generate a new certificate, please delete it first."
|
34
|
+
end
|
35
|
+
|
36
|
+
puts "Will generate a certificate file at: #{pfx_file}"
|
37
|
+
|
38
|
+
project = Airake::Project.new_from_rake(ENV)
|
39
|
+
optionals = {}
|
40
|
+
|
41
|
+
print "Specify common name (e.g. SelfSign, ADigitalID): "
|
42
|
+
cn = STDIN.gets.chomp!
|
43
|
+
|
44
|
+
print "Key type (e.g. 1024-RSA, 2048-RSA): "
|
45
|
+
key_type = STDIN.gets.chomp!
|
46
|
+
|
47
|
+
print "Org unit (optional; e.g QE): "
|
48
|
+
optionals[:ou] = STDIN.gets.chomp!
|
49
|
+
|
50
|
+
print "Org name (optional; e.g Example - CO): "
|
51
|
+
input = STDIN.gets.chomp!
|
52
|
+
optionals[:o] = "\"#{input}\"" unless input.blank?
|
53
|
+
|
54
|
+
print "Country (optional; e.g. US): "
|
55
|
+
optionals[:c] = STDIN.gets.chomp!
|
56
|
+
|
57
|
+
print "Password: "
|
58
|
+
password = STDIN.gets.chomp!
|
59
|
+
|
60
|
+
Airake::Runner.run(project.adt, :certificate, cn, pfx_file, key_type, password, optionals)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Check certificate configuration for package task
|
64
|
+
task :check_certificate do
|
65
|
+
pfx_file = ENV["CERTIFICATE"]
|
66
|
+
|
67
|
+
if pfx_file.blank? || pfx_file == "path/to/certificate.pfx"
|
68
|
+
raise <<-EOS
|
69
|
+
No certificate path found (or not set). Please specify ENV[\"CERTIFICATE\"] = \"path/to/certificate.pfx\" in Rakefile.
|
70
|
+
If you don't have a certificate run rake air:certificate to generate one.
|
71
|
+
EOS
|
72
|
+
end
|
73
|
+
|
74
|
+
raise "Certificate does not exist yet. Run rake air:certificate to generate one at #{pfx_file}" unless File.exist?(pfx_file)
|
21
75
|
end
|
22
76
|
|
23
77
|
desc "Package"
|
24
|
-
task :package => :compile do
|
78
|
+
task :package => [ :check_certificate, :compile ] do
|
25
79
|
project = Airake::Project.new_from_rake(ENV)
|
26
|
-
project.
|
80
|
+
Airake::Runner.run(project.adt, :package)
|
27
81
|
end
|
28
82
|
|
29
83
|
task :set_debug do
|
30
84
|
ENV["DEBUG"] = "true" unless ENV.has_key?("DEBUG")
|
31
85
|
end
|
32
86
|
|
33
|
-
desc "
|
87
|
+
desc "Launch ADL"
|
34
88
|
task :adl => [ :set_debug, :compile ] do
|
35
89
|
project = Airake::Project.new_from_rake(ENV)
|
36
|
-
project.
|
90
|
+
Airake::Runner.run(project.adl, :launch)
|
37
91
|
end
|
38
92
|
|
39
93
|
end
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
namespace :air do
|
4
4
|
|
5
|
-
desc "Start the FCSHD process (DEPRECATED)"
|
6
5
|
task :start_fcshd do
|
7
6
|
puts "Starting FCSHD..."
|
8
7
|
PatternPark::FCSHD.start_from_rake(ENV)
|
@@ -10,7 +9,6 @@ namespace :air do
|
|
10
9
|
|
11
10
|
task :fcshd => :start_fcshd # Alias
|
12
11
|
|
13
|
-
desc "Stop the FCSHD process (DEPRECATED)"
|
14
12
|
task :stop_fcshd do
|
15
13
|
begin
|
16
14
|
fcsh = PatternPark::FCSH.new_from_rake(ENV)
|
@@ -20,7 +18,6 @@ namespace :air do
|
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
23
|
-
desc "Restart the FCSHD process (DEPRECATED)"
|
24
21
|
task :restart_fcshd => [ :stop_fcshd, :sleep, :start_fcshd ]
|
25
22
|
|
26
23
|
task :sleep do
|
data/lib/airake/version.rb
CHANGED
data/lib/airake.rb
CHANGED
@@ -3,10 +3,19 @@ $:.unshift File.dirname(__FILE__)
|
|
3
3
|
require 'airake/daemonize'
|
4
4
|
require 'airake/fcsh'
|
5
5
|
require 'airake/fcshd'
|
6
|
+
require 'airake/commands/amxmlc'
|
7
|
+
require 'airake/commands/adl'
|
8
|
+
require 'airake/commands/adt'
|
6
9
|
require 'airake/project'
|
10
|
+
require 'airake/runner'
|
7
11
|
require 'rake'
|
8
12
|
require 'airake/tasks'
|
9
13
|
|
14
|
+
unless Object.respond_to?(:blank?)
|
15
|
+
require 'airake/core_ext/blank'
|
16
|
+
end
|
17
|
+
|
18
|
+
|
10
19
|
module Airake
|
11
20
|
|
12
21
|
end
|
@@ -3,12 +3,11 @@ require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
|
3
3
|
class TestAirakeGenerator < Test::Unit::TestCase
|
4
4
|
include RubiGen::GeneratorTestHelper
|
5
5
|
|
6
|
-
attr_reader :app_name
|
6
|
+
attr_reader :app_name
|
7
7
|
|
8
8
|
def setup
|
9
9
|
bare_setup
|
10
10
|
@app_name = "foo"
|
11
|
-
@app_id = "com.foo.Bar"
|
12
11
|
end
|
13
12
|
|
14
13
|
def teardown
|
@@ -30,7 +29,7 @@ class TestAirakeGenerator < Test::Unit::TestCase
|
|
30
29
|
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
31
30
|
|
32
31
|
def test_generator_with_options
|
33
|
-
run_generator('airake', [APP_ROOT
|
32
|
+
run_generator('airake', [APP_ROOT], sources)
|
34
33
|
assert_generated_file "Rakefile"
|
35
34
|
assert_generated_file "README"
|
36
35
|
assert_directory_exists "bin"
|
@@ -39,10 +38,10 @@ class TestAirakeGenerator < Test::Unit::TestCase
|
|
39
38
|
assert_directory_exists "test"
|
40
39
|
end
|
41
40
|
|
42
|
-
|
41
|
+
private
|
42
|
+
|
43
43
|
def sources
|
44
|
-
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
45
|
-
]
|
44
|
+
[ RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path)) ]
|
46
45
|
end
|
47
46
|
|
48
47
|
def generator_path
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestBrowsairGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
attr_reader :app_name, :url
|
7
|
+
|
8
|
+
def setup
|
9
|
+
bare_setup
|
10
|
+
@app_name = "GReader"
|
11
|
+
@url = "http://reader.google.com"
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
bare_teardown
|
16
|
+
end
|
17
|
+
|
18
|
+
# Some generator-related assertions:
|
19
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
20
|
+
# assert_directory_exists(name)
|
21
|
+
# assert_generated_class(name, &block)
|
22
|
+
# assert_generated_module(name, &block)
|
23
|
+
# assert_generated_test_for(name, &block)
|
24
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
25
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
26
|
+
#
|
27
|
+
# Other helper methods are:
|
28
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
29
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
30
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
31
|
+
|
32
|
+
def test_generator_with_options
|
33
|
+
run_generator('browsair', [ APP_ROOT, @url ], sources)
|
34
|
+
assert_generated_file "Rakefile"
|
35
|
+
assert_generated_file "README"
|
36
|
+
assert_directory_exists "bin"
|
37
|
+
assert_directory_exists "src"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def sources
|
43
|
+
[ RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path)) ]
|
44
|
+
end
|
45
|
+
|
46
|
+
def generator_path
|
47
|
+
"app_generators"
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: airake
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1
|
7
|
-
date: 2007-10-
|
8
|
-
summary: Adobe AIR tasks
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2007-10-11 00:00:00 -04:00
|
8
|
+
summary: Adobe AIR generators and tasks
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
11
|
email: gabrielh@gmail.com
|
12
12
|
homepage: http://airake.rubyforge.org
|
13
13
|
rubyforge_project: airake
|
14
|
-
description: Adobe AIR tasks
|
14
|
+
description: Adobe AIR generators and tasks
|
15
15
|
autorequire:
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
@@ -38,28 +38,38 @@ files:
|
|
38
38
|
- app_generators/airake/USAGE
|
39
39
|
- app_generators/airake/airake_generator.rb
|
40
40
|
- app_generators/airake/templates/README
|
41
|
-
- app_generators/airake/templates/Rakefile
|
42
|
-
- app_generators/airake/templates/application.mxml
|
43
|
-
- app_generators/airake/templates/descriptor.xml
|
44
41
|
- app_generators/airake/templates/lib/corelib-08.30.2007.swc
|
45
|
-
- app_generators/
|
46
|
-
- app_generators/
|
47
|
-
- app_generators/
|
48
|
-
- app_generators/
|
42
|
+
- app_generators/browsair/USAGE
|
43
|
+
- app_generators/browsair/browsair_generator.rb
|
44
|
+
- app_generators/browsair/templates/README
|
45
|
+
- app_generators/shared/Rakefile
|
46
|
+
- app_generators/shared/application.mxml
|
47
|
+
- app_generators/shared/descriptor.xml
|
48
|
+
- app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt
|
49
|
+
- app_generators/shared/icons/Web.png
|
50
|
+
- app_generators/shared/lib/flexunit-08.30.2007.swc
|
51
|
+
- app_generators/shared/test/Test-app.xml
|
52
|
+
- app_generators/shared/test/Test.mxml
|
53
|
+
- app_generators/shared/test/suite/AllTests.as
|
49
54
|
- bin/airake
|
55
|
+
- bin/browsair
|
50
56
|
- config/hoe.rb
|
51
57
|
- config/requirements.rb
|
52
58
|
- lib/airake.rb
|
59
|
+
- lib/airake/commands/adl.rb
|
60
|
+
- lib/airake/commands/adt.rb
|
61
|
+
- lib/airake/commands/amxmlc.rb
|
62
|
+
- lib/airake/core_ext/blank.rb
|
53
63
|
- lib/airake/daemonize.rb
|
54
64
|
- lib/airake/fcsh.rb
|
55
65
|
- lib/airake/fcshd.rb
|
56
66
|
- lib/airake/project.rb
|
67
|
+
- lib/airake/runner.rb
|
57
68
|
- lib/airake/tasks.rb
|
58
69
|
- lib/airake/tasks/air.rake
|
59
70
|
- lib/airake/tasks/deployment.rake
|
60
71
|
- lib/airake/tasks/fcsh.rake
|
61
72
|
- lib/airake/version.rb
|
62
|
-
- log/debug.log
|
63
73
|
- script/destroy
|
64
74
|
- script/generate
|
65
75
|
- setup.rb
|
@@ -68,11 +78,13 @@ files:
|
|
68
78
|
- tasks/website.rake
|
69
79
|
- test/test_airake.rb
|
70
80
|
- test/test_airake_generator.rb
|
81
|
+
- test/test_browsair_generator.rb
|
71
82
|
- test/test_generator_helper.rb
|
72
83
|
- test/test_helper.rb
|
73
84
|
test_files:
|
74
85
|
- test/test_airake.rb
|
75
86
|
- test/test_airake_generator.rb
|
87
|
+
- test/test_browsair_generator.rb
|
76
88
|
- test/test_generator_helper.rb
|
77
89
|
- test/test_helper.rb
|
78
90
|
rdoc_options:
|
@@ -84,8 +96,10 @@ extra_rdoc_files:
|
|
84
96
|
- Manifest.txt
|
85
97
|
- Notes.txt
|
86
98
|
- README.txt
|
99
|
+
- app_generators/shared/icons/MouseRunnerDotComGraphicsLicense.txt
|
87
100
|
executables:
|
88
101
|
- airake
|
102
|
+
- browsair
|
89
103
|
extensions: []
|
90
104
|
|
91
105
|
requirements: []
|
data/log/debug.log
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|