airake 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/app_generators/airake/airake_generator.rb +1 -0
- data/app_generators/browsair/browsair_generator.rb +2 -1
- data/app_generators/shared/Rakefile +2 -12
- data/lib/airake/project.rb +61 -80
- data/lib/airake/tasks/air.rake +24 -19
- data/lib/airake/version.rb +2 -2
- data/lib/airake.rb +4 -0
- metadata +2 -2
data/History.txt
CHANGED
@@ -43,6 +43,7 @@ class AirakeGenerator < RubiGen::Base
|
|
43
43
|
m.template "Rakefile", "Rakefile"
|
44
44
|
m.template "descriptor_M6.xml", "src/#{app_name}-app.xml"
|
45
45
|
m.template "application.mxml", "src/#{app_name}.mxml"
|
46
|
+
m.template "airake.yml", "airake.yml"
|
46
47
|
|
47
48
|
# Icons
|
48
49
|
m.directory "src/assets/app_icons"
|
@@ -45,7 +45,8 @@ class BrowsairGenerator < RubiGen::Base
|
|
45
45
|
# Source
|
46
46
|
m.directory "src"
|
47
47
|
m.template "descriptor_M6.xml", "src/#{app_name}-app.xml"
|
48
|
-
m.template "application.mxml", "src/#{app_name}.mxml"
|
48
|
+
m.template "application.mxml", "src/#{app_name}.mxml"
|
49
|
+
m.template "airake.yml", "airake.yml"
|
49
50
|
|
50
51
|
# Icons
|
51
52
|
if icon_src_path.blank?
|
@@ -1,18 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'airake'
|
3
3
|
|
4
|
-
|
5
|
-
ENV["
|
6
|
-
|
7
|
-
# dirname $0
|
8
|
-
ENV["BASE_DIR"] ||= File.expand_path(File.dirname(__FILE__))
|
9
|
-
|
10
|
-
# MXML options
|
11
|
-
ENV["MXML"] ||= "src/<%= app_name %>.mxml"
|
12
|
-
ENV["MXML_TEST"] ||= "test/Test.mxml"
|
13
|
-
|
14
|
-
# Assets to package, can be multiple items, e.g. "src/assets/app_icons src/assets/tray_icons"
|
15
|
-
ENV["ASSETS"] ||= "src/assets"
|
4
|
+
ENV["AIRAKE_ROOT"] = File.dirname(__FILE__)
|
5
|
+
ENV["AIRAKE_ENV"] = "development"
|
16
6
|
|
17
7
|
# Aliases
|
18
8
|
task :test => [ "air:test" ] do; end
|
data/lib/airake/project.rb
CHANGED
@@ -1,67 +1,77 @@
|
|
1
|
-
module Airake
|
1
|
+
module Airake
|
2
2
|
|
3
3
|
#
|
4
4
|
# Project for AIR application
|
5
5
|
#
|
6
6
|
class Project
|
7
7
|
|
8
|
-
attr_reader :base_dir, :
|
8
|
+
attr_reader :base_dir, :src_dirs, :lib_dir
|
9
9
|
attr_reader :mxml_path, :appxml_path, :air_path, :swf_path
|
10
10
|
attr_reader :debug, :assets, :certificate
|
11
|
-
attr_reader :build_env
|
12
11
|
|
13
|
-
# Options to override defaults
|
14
|
-
Options = [ :bin_dir, :src_dir, :lib_dir, :test_dir,
|
15
|
-
:appxml_path, :air_path, :swf_path, :debug, :certificate, :assets,
|
16
|
-
:amxmlc_path, :adl_path, :adt_path, :asdoc_path, :amxmlc_extra_opts, :adl_extra_opts, :adt_extra_opts, :asdoc_extra_opts ]
|
17
|
-
|
18
12
|
# Build project:
|
19
13
|
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# options:
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# swf_path: Path to SWF file, defaults to '<bin_dir>/<ProjectName.swf'
|
14
|
+
# env: development, test
|
15
|
+
# base_dir: Base (project) directory, if nil, AirakeRoot is used
|
16
|
+
# options: If nil, loaded from airake.yml in root. (All paths relative to base directory)
|
17
|
+
# mxml_path: Path to the ProjectName.mxml
|
18
|
+
# appxml_path: Path to application descriptor
|
19
|
+
# src_dirs: Paths to source
|
20
|
+
# lib_dir: Path to lib directory
|
21
|
+
# air_path: Path to AIR file
|
22
|
+
# swf_path: Path to SWF file
|
30
23
|
# debug: "true" or "false"
|
31
24
|
# assets: Path to assets
|
32
25
|
# certificate: Path to certificate
|
33
|
-
#
|
26
|
+
#
|
34
27
|
# Other options:
|
35
|
-
#
|
28
|
+
# mxmlc_path, adt_path, adl_path, asdoc_path, mxmlc_extra_opts, adt_extra_opts, adl_extra_opts, asdoc_extra_opts
|
36
29
|
#
|
37
|
-
def initialize(
|
38
|
-
|
30
|
+
def initialize(env = nil, base_dir = nil, options = nil)
|
31
|
+
|
32
|
+
env = ENV["AIRAKE_ENV"] if env.nil?
|
33
|
+
base_dir = ENV["AIRAKE_ROOT"] if base_dir.nil?
|
34
|
+
raise "Need to specify an AIRAKE_ROOT (project root)" if base_dir.blank?
|
39
35
|
|
40
|
-
|
41
|
-
|
36
|
+
if options.nil?
|
37
|
+
conf_path = File.join(base_dir, "airake.yml")
|
38
|
+
unless File.exist?(conf_path)
|
39
|
+
raise <<-EOS
|
40
|
+
|
41
|
+
You are missing your #{conf_path} configuration file.
|
42
|
+
|
43
|
+
For existing projects, please regenerate an airake project and look at Rakefile and airake.yml for an example.
|
44
|
+
|
45
|
+
EOS
|
46
|
+
end
|
47
|
+
|
48
|
+
options = YAML.load_file(File.join(base_dir, "airake.yml"))
|
49
|
+
env_options = options[env]
|
50
|
+
options = options.merge(env_options) if env_options
|
51
|
+
options.symbolize_keys!
|
52
|
+
end
|
42
53
|
|
43
54
|
@base_dir = base_dir
|
44
|
-
@mxml_path = File.join(mxml_dir, "#{project_name}.mxml")
|
45
|
-
@build_env = build_env
|
46
55
|
|
47
|
-
@
|
48
|
-
@
|
49
|
-
@lib_dir = options[:lib_dir] || File.join(base_dir, "lib")
|
50
|
-
@test_dir = options[:test_dir] || File.join(base_dir, "test")
|
56
|
+
@mxml_path = File.join(base_dir, options[:mxml_path])
|
57
|
+
@appxml_path = File.join(base_dir, options[:appxml_path])
|
51
58
|
|
52
|
-
@
|
59
|
+
@src_dirs = options[:src_dirs].collect { |src_dir| File.join(base_dir, src_dir) }
|
60
|
+
@lib_dir = File.join(base_dir, options[:lib_dir]) if options[:lib_dir]
|
53
61
|
|
54
62
|
# Dest package files
|
55
|
-
@air_path =
|
56
|
-
@swf_path =
|
63
|
+
@air_path = File.join(base_dir, options[:air_path])
|
64
|
+
@swf_path = File.join(base_dir, options[:swf_path])
|
57
65
|
|
58
66
|
# Debug options
|
59
|
-
@debug = options[:debug]
|
67
|
+
@debug = options[:debug]
|
60
68
|
|
61
69
|
with_keyed_options([ :assets, :certificate, :mxmlc_path, :adt_path, :adl_path, :asdoc_path,
|
62
70
|
:mxmlc_extra_opts, :adt_extra_opts, :adl_extra_opts, :asdoc_extra_opts ], options)
|
71
|
+
|
72
|
+
ensure_exists([ @mxml_path, @appxml_path, *@src_dirs ])
|
63
73
|
end
|
64
|
-
|
74
|
+
|
65
75
|
# Flex compiler command (under AIR) for this project
|
66
76
|
def amxmlc
|
67
77
|
mxmlc({ :config_name => "air" })
|
@@ -69,16 +79,10 @@ module Airake #:nodoc
|
|
69
79
|
|
70
80
|
# Flex compiler command for this project
|
71
81
|
def mxmlc(options = {})
|
72
|
-
src_dirs = case build_env
|
73
|
-
when :normal then [ @src_dir ]
|
74
|
-
when :test then [ @src_dir, @test_dir ]
|
75
|
-
else raise "Invalid build_env setting: #{build_env}"
|
76
|
-
end
|
77
|
-
|
78
82
|
options = options.merge({ :swf_path => @swf_path, :mxml_path => @mxml_path, :lib_dir => @lib_dir,
|
79
|
-
:src_dirs => src_dirs, :debug => @debug, :mxmlc_extra_opts => @mxmlc_extra_opts,
|
83
|
+
:src_dirs => @src_dirs, :debug => @debug, :mxmlc_extra_opts => @mxmlc_extra_opts,
|
80
84
|
:mxmlc_path => @mxmlc_path })
|
81
|
-
|
85
|
+
|
82
86
|
Airake::Commands::Mxmlc.new(options)
|
83
87
|
end
|
84
88
|
|
@@ -100,50 +104,21 @@ module Airake #:nodoc
|
|
100
104
|
# AS docs
|
101
105
|
def asdoc
|
102
106
|
src_dirs = [ @src_dir ]
|
103
|
-
options = { :lib_dir => @lib_dir, :src_dirs => src_dirs, :asdoc_extra_opts => @asdoc_extra_opts,
|
107
|
+
options = { :lib_dir => @lib_dir, :src_dirs => @src_dirs, :asdoc_extra_opts => @asdoc_extra_opts,
|
104
108
|
:asdoc_path => @asdoc_path }
|
105
109
|
Airake::Commands::Asdoc.new(options)
|
106
110
|
end
|
107
111
|
|
108
|
-
#
|
109
|
-
def
|
110
|
-
|
111
|
-
|
112
|
-
|
112
|
+
# Remove files
|
113
|
+
def clean
|
114
|
+
paths = [ swf_path, air_path ]
|
115
|
+
paths.each do |path|
|
116
|
+
FileUtils.rm(path, :verbose => true) if File.exist?(path)
|
113
117
|
end
|
114
118
|
end
|
119
|
+
|
120
|
+
protected
|
115
121
|
|
116
|
-
#
|
117
|
-
# Create project using parameters from rake ENV:
|
118
|
-
#
|
119
|
-
# BASE_DIR: Path to project base
|
120
|
-
# MXML: Path to mxml file
|
121
|
-
# MXML_TEST: In test environment, path to test mxml file
|
122
|
-
#
|
123
|
-
# You can override any of the project options via ENV; just upcase it. <tt>:foo_bar => ENV["FOO_BAR"]</tt>
|
124
|
-
#
|
125
|
-
# This shouldn't really be here, but a Rakefile is a bad place to be :O
|
126
|
-
#
|
127
|
-
# Booleans must be "true" for true
|
128
|
-
#
|
129
|
-
def self.new_from_rake(env, build_env = :normal)
|
130
|
-
base_dir = env["BASE_DIR"]
|
131
|
-
mxml = case build_env
|
132
|
-
when :test then env["MXML_TEST"]
|
133
|
-
when :normal then env["MXML"]
|
134
|
-
else raise "Invalid build env: #{build_env}"
|
135
|
-
end
|
136
|
-
|
137
|
-
# For any option check to see if its in the ENV
|
138
|
-
options = {}
|
139
|
-
Options.each do |option_key|
|
140
|
-
env_key = option_key.to_s.upcase
|
141
|
-
options[option_key] = env[env_key] if env.has_key?(env_key)
|
142
|
-
end
|
143
|
-
#puts "Using options: #{options.inspect}" unless options.empty?
|
144
|
-
self.new(base_dir, mxml, options, build_env)
|
145
|
-
end
|
146
|
-
|
147
122
|
# Load options into instance vars
|
148
123
|
def with_keyed_options(keys, options)
|
149
124
|
keys.each do |key|
|
@@ -152,6 +127,12 @@ module Airake #:nodoc
|
|
152
127
|
end
|
153
128
|
end
|
154
129
|
|
130
|
+
def ensure_exists(paths)
|
131
|
+
paths.each do |path|
|
132
|
+
raise "Path not found: #{path}" unless File.exist?(path)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
155
136
|
end
|
156
137
|
|
157
138
|
end
|
data/lib/airake/tasks/air.rake
CHANGED
@@ -3,7 +3,7 @@ namespace :air do
|
|
3
3
|
desc "Compile"
|
4
4
|
task :compile => :clean do
|
5
5
|
begin
|
6
|
-
project = Airake::Project.
|
6
|
+
project = Airake::Project.new
|
7
7
|
fcsh = PatternPark::FCSH.new_from_rake(ENV)
|
8
8
|
fcsh.execute([ project.base_dir, project.amxmlc.compile ])
|
9
9
|
rescue PatternPark::FCSHConnectError => e
|
@@ -13,17 +13,25 @@ namespace :air do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "Test"
|
16
|
-
task :test
|
17
|
-
ENV["
|
18
|
-
|
16
|
+
task :test do
|
17
|
+
ENV["AIRAKE_ENV"] = "test"
|
18
|
+
Rake::Task["air:clean"].invoke
|
19
|
+
|
20
|
+
test_project = Airake::Project.new
|
19
21
|
Airake::Runner.run(test_project.amxmlc, :compile)
|
20
22
|
Airake::Runner.run(test_project.adl, :launch)
|
21
23
|
end
|
22
24
|
|
23
25
|
desc "Generate certificate"
|
24
26
|
task :certificate do
|
27
|
+
|
25
28
|
pfx_file = ENV["CERTIFICATE"]
|
26
29
|
|
30
|
+
unless pfx_file
|
31
|
+
project = Airake::Project.new
|
32
|
+
pfx_file = project.certificate
|
33
|
+
end
|
34
|
+
|
27
35
|
if pfx_file.blank? || pfx_file == "path/to/certificate.pfx"
|
28
36
|
print "Certificate file (to create; e.g. cert.pfx): "
|
29
37
|
pfx_file = STDIN.gets.chomp!
|
@@ -39,7 +47,7 @@ namespace :air do
|
|
39
47
|
|
40
48
|
puts "Will generate a certificate file at: #{pfx_file}"
|
41
49
|
|
42
|
-
project = Airake::Project.
|
50
|
+
project = Airake::Project.new
|
43
51
|
optionals = {}
|
44
52
|
|
45
53
|
print "Specify common name (e.g. SelfSign, ADigitalID) [SelfSign]: "
|
@@ -70,9 +78,14 @@ namespace :air do
|
|
70
78
|
task :check_certificate do
|
71
79
|
pfx_file = ENV["CERTIFICATE"]
|
72
80
|
|
81
|
+
unless pfx_file
|
82
|
+
project = Airake::Project.new
|
83
|
+
pfx_file = project.certificate
|
84
|
+
end
|
85
|
+
|
73
86
|
if pfx_file.blank? || pfx_file == "path/to/certificate.pfx"
|
74
87
|
raise <<-EOS
|
75
|
-
No certificate path found (or not set). Please specify ENV[\"CERTIFICATE\"] = \"path/to/certificate.pfx\" in Rakefile.
|
88
|
+
No certificate path found (or not set). Please specify ENV[\"CERTIFICATE\"] = \"path/to/certificate.pfx\" in Rakefile. Or certificate: path/to/cert.pfx in airake.yml.
|
76
89
|
If you don't have a certificate run rake air:certificate to generate one.
|
77
90
|
EOS
|
78
91
|
end
|
@@ -85,7 +98,7 @@ namespace :air do
|
|
85
98
|
|
86
99
|
desc "Package only"
|
87
100
|
task :package_only do
|
88
|
-
project = Airake::Project.
|
101
|
+
project = Airake::Project.new
|
89
102
|
Airake::Runner.run(project.adt, :package)
|
90
103
|
end
|
91
104
|
|
@@ -98,7 +111,7 @@ namespace :air do
|
|
98
111
|
|
99
112
|
desc "Launch ADL only"
|
100
113
|
task :adl_only do
|
101
|
-
project = Airake::Project.
|
114
|
+
project = Airake::Project.new
|
102
115
|
Airake::Runner.run(project.adl, :launch)
|
103
116
|
end
|
104
117
|
|
@@ -140,22 +153,14 @@ namespace :air do
|
|
140
153
|
|
141
154
|
desc "Docs"
|
142
155
|
task :docs do
|
143
|
-
project = Airake::Project.
|
156
|
+
project = Airake::Project.new
|
144
157
|
Airake::Runner.run(project.asdoc, :generate)
|
145
158
|
end
|
146
159
|
|
147
160
|
desc "Clean"
|
148
161
|
task :clean do
|
149
|
-
project = Airake::Project.
|
150
|
-
|
151
|
-
|
152
|
-
# Test
|
153
|
-
test_project = Airake::Project.new_from_rake(ENV, :test)
|
154
|
-
paths += project.to_clean
|
155
|
-
|
156
|
-
paths.each do |path|
|
157
|
-
FileUtils.rm(path, :verbose => true) if File.exist?(path)
|
158
|
-
end
|
162
|
+
project = Airake::Project.new
|
163
|
+
project.clean
|
159
164
|
end
|
160
165
|
|
161
166
|
end
|
data/lib/airake/version.rb
CHANGED
data/lib/airake.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ""
|
6
6
|
authors:
|
7
7
|
- Gabriel Handford, Min Kim
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-01-
|
12
|
+
date: 2008-01-24 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|