airake 0.2.8 → 0.2.9
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/airake/commands/acompc.rb +12 -11
- data/lib/airake/commands/adl.rb +6 -5
- data/lib/airake/commands/adt.rb +8 -9
- data/lib/airake/commands/amxmlc.rb +29 -21
- data/lib/airake/commands/base.rb +8 -1
- data/lib/airake/project.rb +38 -18
- data/lib/airake/runner.rb +9 -7
- data/lib/airake/tasks/air.rake +4 -4
- data/lib/airake/version.rb +1 -1
- metadata +2 -2
@@ -18,35 +18,36 @@ module Airake #:nodoc:
|
|
18
18
|
def initialize(options = {})
|
19
19
|
@path = options[:acompc_path] || "acompc"
|
20
20
|
@extra_opts = options[:acompc_extra_opts]
|
21
|
-
with_options(options, { :source_path => "src" })
|
22
|
-
|
23
|
-
|
21
|
+
with_options(options, { :source_path => "src" })
|
22
|
+
assert_required([ :path, :source_path, :output_path, :include_packages ])
|
23
|
+
@include_classes = include_classes
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
# Find classes list from packages, raises error if result is empty
|
27
|
+
def include_classes
|
27
28
|
classes = []
|
28
29
|
paths = []
|
29
|
-
include_packages.each do |include_package|
|
30
|
-
path = File.join(source_path, include_package.gsub(".", "/")) + "/**/*.as"
|
30
|
+
@include_packages.each do |include_package|
|
31
|
+
path = File.join(@source_path, include_package.gsub(".", "/")) + "/**/*.as"
|
31
32
|
paths << path
|
32
33
|
Dir[path].each do |file|
|
33
34
|
classes << include_package + "." + File.basename(file).gsub(".as", "")
|
34
35
|
end
|
35
36
|
end
|
36
37
|
raise "No classes found at:\n\t#{paths.join("\n\t")}" if classes.empty?
|
37
|
-
classes
|
38
|
+
classes
|
38
39
|
end
|
39
40
|
|
40
41
|
# Get the acompc compile command
|
41
42
|
def compile
|
42
43
|
command = []
|
43
|
-
command << path
|
44
|
+
command << @path
|
44
45
|
command << "-source-path"
|
45
|
-
command << source_path
|
46
|
+
command << @source_path
|
46
47
|
command << "-include-classes"
|
47
|
-
command <<
|
48
|
+
command << @include_classes.join(" ")
|
48
49
|
command << "-output"
|
49
|
-
command << output_path
|
50
|
+
command << @output_path
|
50
51
|
process(command)
|
51
52
|
end
|
52
53
|
|
data/lib/airake/commands/adl.rb
CHANGED
@@ -9,20 +9,21 @@ module Airake #:nodoc:
|
|
9
9
|
|
10
10
|
attr_reader :project, :path, :extra_opts, :appxml_path, :root_dir
|
11
11
|
|
12
|
-
# options:: :adl_path, adl_extra_opts, :appxml_path, :root_dir
|
12
|
+
# options:: :adl_path, :adl_extra_opts, :appxml_path, :root_dir
|
13
13
|
def initialize(options = {})
|
14
14
|
@path = options[:adl_path] || "adl"
|
15
15
|
@extra_opts = options[:adl_extra_opts]
|
16
16
|
with_options(options)
|
17
|
+
assert_required([ :path, :appxml_path, :root_dir ])
|
17
18
|
end
|
18
19
|
|
19
20
|
# Get the ADL launch command
|
20
21
|
def launch
|
21
22
|
command = []
|
22
|
-
command << path
|
23
|
-
command << extra_opts
|
24
|
-
command << escape(appxml_path)
|
25
|
-
command << escape(root_dir)
|
23
|
+
command << @path
|
24
|
+
command << @extra_opts
|
25
|
+
command << escape(@appxml_path)
|
26
|
+
command << escape(@root_dir)
|
26
27
|
process(command)
|
27
28
|
end
|
28
29
|
|
data/lib/airake/commands/adt.rb
CHANGED
@@ -14,21 +14,20 @@ module Airake #:nodoc:
|
|
14
14
|
@path = options[:adt_path] || "adt"
|
15
15
|
@extra_opts = options[:adt_extra_opts]
|
16
16
|
with_options(options)
|
17
|
+
assert_required([ :path, :base_dir, :air_path, :appxml_path, :swf_path ])
|
17
18
|
end
|
18
19
|
|
19
20
|
# Get the ADT package command
|
20
21
|
def package
|
21
|
-
raise ArgumentError, "Must specify :base_dir" unless base_dir
|
22
|
-
|
23
22
|
command = []
|
24
|
-
command << path
|
25
|
-
command << extra_opts
|
23
|
+
command << @path
|
24
|
+
command << @extra_opts
|
26
25
|
command << "-package"
|
27
|
-
command << "-certificate #{certificate}" unless certificate.blank?
|
28
|
-
command << escape(relative_path(air_path, base_dir))
|
29
|
-
command << escape(relative_path(appxml_path, base_dir))
|
30
|
-
command << escape(relative_path(swf_path, base_dir))
|
31
|
-
command << assets
|
26
|
+
command << "-certificate #{certificate}" unless @certificate.blank?
|
27
|
+
command << escape(relative_path(@air_path, @base_dir))
|
28
|
+
command << escape(relative_path(@appxml_path, @base_dir))
|
29
|
+
command << escape(relative_path(@swf_path, @base_dir))
|
30
|
+
command << @assets unless @assets.nil?
|
32
31
|
process(command)
|
33
32
|
end
|
34
33
|
|
@@ -7,47 +7,55 @@ module Airake #:nodoc:
|
|
7
7
|
# http://livedocs.adobe.com/labs/air/1/devappsflex/help.html?content=CommandLineTools_2.html#1032546
|
8
8
|
class Amxmlc < Base
|
9
9
|
|
10
|
-
attr_reader :path, :extra_opts, :swf_path, :mxml_path, :lib_dir, :
|
10
|
+
attr_reader :path, :extra_opts, :swf_path, :mxml_path, :lib_dir, :src_dirs, :debug
|
11
11
|
|
12
|
-
# options:: :amxmlc_path, :amxmlc_extra_opts, :swf_path, :mxml_path, :lib_dir, :
|
12
|
+
# options:: :amxmlc_path, :amxmlc_extra_opts, :swf_path, :mxml_path, :lib_dir, :src_dirs, :debug
|
13
13
|
def initialize(options = {})
|
14
14
|
@path = options[:amxmlc_path] || "mxmlc +configname=air"
|
15
15
|
@extra_opts = options[:amxmlc_extra_opts]
|
16
|
-
with_options(options)
|
16
|
+
with_options(options)
|
17
|
+
assert_required([ :path, :swf_path, :mxml_path ])
|
18
|
+
@source_paths = source_paths
|
19
|
+
raise ArgumentError, "There aren't any valid source directories to compile" if @source_paths.empty?
|
20
|
+
@library_path = library_path
|
17
21
|
end
|
18
22
|
|
19
23
|
# Get the amxmlc compile command
|
20
24
|
def compile
|
21
25
|
command = []
|
22
|
-
command << path
|
23
|
-
command <<
|
24
|
-
command <<
|
26
|
+
command << @path
|
27
|
+
command << "-source-path #{@source_paths.join(" ")}"
|
28
|
+
command << "-library-path+=#{@library_path}"
|
25
29
|
command << "-output"
|
26
|
-
command << escape(swf_path)
|
27
|
-
command <<
|
28
|
-
command << extra_opts
|
30
|
+
command << escape(@swf_path)
|
31
|
+
command << "-debug=#{@debug}" unless @debug.nil?
|
32
|
+
command << @extra_opts
|
29
33
|
#command << "-disable-incremental-optimizations=true"
|
30
34
|
command << "--"
|
31
|
-
command << escape(mxml_path)
|
35
|
+
command << escape(@mxml_path)
|
32
36
|
process(command)
|
33
37
|
end
|
34
38
|
|
35
39
|
protected
|
36
40
|
|
37
|
-
def
|
41
|
+
def source_paths
|
42
|
+
source_paths = []
|
38
43
|
# List of directories in lib/ for source_path +=
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
44
|
+
if @lib_dir and File.directory?(@lib_dir)
|
45
|
+
Dir["#{@lib_dir}/*"].collect { |f| escape(f) if File.directory?(f) }.compact
|
46
|
+
end
|
47
|
+
|
48
|
+
@src_dirs.each do |src_dir|
|
49
|
+
if File.directory?(src_dir)
|
50
|
+
source_paths << escape(src_dir)
|
51
|
+
else
|
52
|
+
raise "Source directory: #{src_dir} is not a directory or does not exist"
|
53
|
+
end
|
54
|
+
end
|
45
55
|
end
|
46
56
|
|
47
|
-
def
|
48
|
-
|
49
|
-
library_paths << escape(lib_dir) if lib_dir and File.directory?(lib_dir)
|
50
|
-
library_paths.empty? ? "" : "-library-path+=#{library_paths.join(" ")}"
|
57
|
+
def library_path
|
58
|
+
escape(@lib_dir) if @lib_dir and File.directory?(@lib_dir)
|
51
59
|
end
|
52
60
|
|
53
61
|
end
|
data/lib/airake/commands/base.rb
CHANGED
@@ -24,7 +24,8 @@ module Airake #:nodoc:
|
|
24
24
|
|
25
25
|
def with_options(options, defaults = {})
|
26
26
|
options.each do |key, value|
|
27
|
-
|
27
|
+
raise "Invalid option: '#{key}' for command: #{self.class}" unless respond_to?(key.to_sym)
|
28
|
+
instance_variable_set("@#{key}", value)
|
28
29
|
end
|
29
30
|
|
30
31
|
defaults.each do |key, value|
|
@@ -33,6 +34,12 @@ module Airake #:nodoc:
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
37
|
+
def assert_required(vars)
|
38
|
+
vars.each do |var|
|
39
|
+
raise ArgumentError, "Must specify option: #{var}" if instance_variable_get("@#{var}").nil?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
36
43
|
end
|
37
44
|
|
38
45
|
end
|
data/lib/airake/project.rb
CHANGED
@@ -5,9 +5,8 @@ module Airake #:nodoc
|
|
5
5
|
|
6
6
|
attr_reader :base_dir, :bin_dir, :src_dir, :lib_dir, :test_dir
|
7
7
|
attr_reader :mxml_path, :appxml_path, :air_path, :swf_path
|
8
|
-
attr_reader :debug
|
9
|
-
attr_reader :
|
10
|
-
attr_reader :assets
|
8
|
+
attr_reader :debug, :assets, :certificate
|
9
|
+
attr_reader :build_env
|
11
10
|
|
12
11
|
# Options to override defaults
|
13
12
|
Options = [ :certificate, :assets, :amxmlc_path, :adt_path, :adt_path, :bin_dir, :src_dir, :lib_dir, :test_dir,
|
@@ -18,7 +17,7 @@ module Airake #:nodoc
|
|
18
17
|
# base_dir:: Base (project) directory
|
19
18
|
# mxml_path: Path to the project.mxml (relative)
|
20
19
|
# options:: Override default paths, commands, extra opts, etc; See Options class var
|
21
|
-
def initialize(base_dir, mxml_path, options = {})
|
20
|
+
def initialize(base_dir, mxml_path, options = {}, build_env = :normal)
|
22
21
|
raise ArgumentError, "Invalid MXML path: #{mxml_path}" if mxml_path.blank?
|
23
22
|
|
24
23
|
mxml_dir = File.expand_path(File.dirname(mxml_path))
|
@@ -26,7 +25,7 @@ module Airake #:nodoc
|
|
26
25
|
|
27
26
|
@base_dir = base_dir
|
28
27
|
@mxml_path = File.join(mxml_dir, "#{project_name}.mxml")
|
29
|
-
@
|
28
|
+
@build_env = build_env
|
30
29
|
|
31
30
|
@bin_dir = options[:bin_dir] || File.join(base_dir, "bin")
|
32
31
|
@src_dir = options[:src_dir] || File.join(base_dir, "src")
|
@@ -40,51 +39,72 @@ module Airake #:nodoc
|
|
40
39
|
@swf_path = options[:swf_path] || File.join(@bin_dir, "#{project_name}.swf")
|
41
40
|
|
42
41
|
# Debug options
|
43
|
-
@debug = options[:debug].is_a?(TrueClass) || options[:debug] == "true"
|
42
|
+
@debug = options[:debug].is_a?(TrueClass) || options[:debug] == "true"
|
43
|
+
|
44
|
+
@assets = options[:assets]
|
45
|
+
@certificate = options[:certificate]
|
44
46
|
end
|
45
47
|
|
46
48
|
# Flex compiler command for this project
|
47
49
|
def amxmlc
|
48
|
-
|
49
|
-
|
50
|
+
src_dirs = case build_env
|
51
|
+
when :normal then [ @src_dir ]
|
52
|
+
when :test then [ @src_dir, @test_dir ]
|
53
|
+
else raise "Invalid build_env setting: #{build_env}"
|
54
|
+
end
|
55
|
+
|
56
|
+
options = { :swf_path => @swf_path, :mxml_path => @mxml_path, :lib_dir => @lib_dir,
|
57
|
+
:src_dirs => src_dirs, :debug => @debug }
|
58
|
+
|
50
59
|
Airake::Commands::Amxmlc.new(options)
|
51
60
|
end
|
52
61
|
|
53
62
|
# ADL command for this project
|
54
63
|
def adl
|
55
|
-
options =
|
64
|
+
options = { :appxml_path => @appxml_path, :root_dir => @base_dir }
|
56
65
|
Airake::Commands::Adl.new(options)
|
57
66
|
end
|
58
67
|
|
59
68
|
# ADT command for this project
|
60
69
|
def adt
|
61
|
-
options =
|
70
|
+
options = { :air_path => @air_path, :appxml_path => @appxml_path, :swf_path => @swf_path,
|
71
|
+
:base_dir => @base_dir, :assets => @assets, :certificate => @certificate }
|
62
72
|
Airake::Commands::Adt.new(options)
|
63
73
|
end
|
74
|
+
|
75
|
+
# List of files to remove on clean
|
76
|
+
def to_clean
|
77
|
+
case build_env
|
78
|
+
when :normal then [ swf_path, air_path ]
|
79
|
+
when :test then [ swf_path ]
|
80
|
+
end
|
81
|
+
end
|
64
82
|
|
65
83
|
# Create project using parameters from rake ENV
|
84
|
+
#
|
85
|
+
# This shouldn't really be here, but a Rakefile is a bad place to be :O
|
66
86
|
#
|
67
87
|
# You can set any of the options via ENV; just upcase it. <tt>:foo_bar => ENV["FOO_BAR"]</tt>
|
68
88
|
#
|
69
89
|
# Booleans must be "true" for true
|
70
|
-
def self.new_from_rake(env,
|
90
|
+
def self.new_from_rake(env, build_env = :normal)
|
71
91
|
base_dir = env["BASE_DIR"]
|
72
|
-
mxml =
|
92
|
+
mxml = case build_env
|
93
|
+
when :test then env["MXML_TEST"]
|
94
|
+
when :normal then env["MXML"]
|
95
|
+
else raise "Invalid build env: #{build_env}"
|
96
|
+
end
|
73
97
|
|
74
98
|
# For any option check to see if its in the ENV
|
75
99
|
options = {}
|
76
100
|
Options.each do |option_key|
|
77
|
-
env_key = option_key.to_s.upcase
|
101
|
+
env_key = option_key.to_s.upcase
|
78
102
|
options[option_key] = env[env_key] if env.has_key?(env_key)
|
79
103
|
end
|
80
104
|
#puts "Using options: #{options.inspect}" unless options.empty?
|
81
|
-
self.new(base_dir, mxml, options)
|
105
|
+
self.new(base_dir, mxml, options, build_env)
|
82
106
|
end
|
83
107
|
|
84
|
-
def debug_option
|
85
|
-
"-debug=#{@debug}" if @debug
|
86
|
-
end
|
87
|
-
|
88
108
|
end
|
89
109
|
|
90
110
|
end
|
data/lib/airake/runner.rb
CHANGED
@@ -7,23 +7,25 @@ module Airake #:nodoc:
|
|
7
7
|
attr_reader :output, :cmd, :took, :process
|
8
8
|
|
9
9
|
def initialize(cmd)
|
10
|
-
@cmd = RUBY_PLATFORM =~ /win32/ ? "cmd.exe /c #{cmd}" : cmd
|
10
|
+
@cmd = RUBY_PLATFORM =~ /win32/ ? "cmd.exe /c #{cmd}" : "#{cmd} 2>&1"
|
11
11
|
end
|
12
12
|
|
13
13
|
def run(verbose = true)
|
14
|
-
puts "Running: #{cmd}" if verbose
|
14
|
+
puts "Running: #{@cmd}" if verbose
|
15
15
|
|
16
16
|
t1 = Time.now
|
17
|
-
IO.popen(@cmd) do |f|
|
18
|
-
|
19
|
-
|
17
|
+
IO.popen(@cmd) do |f|
|
18
|
+
while s = f.read(1)
|
19
|
+
printf s
|
20
|
+
STDOUT.flush
|
21
|
+
end
|
20
22
|
end
|
23
|
+
@process = $?
|
21
24
|
@took = Time.now - t1
|
22
25
|
|
23
26
|
if verbose
|
24
|
-
puts output
|
25
27
|
success? or fail
|
26
|
-
puts "Took %.2fs" % [ took ]
|
28
|
+
#puts "Took %.2fs" % [ @took ]
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
data/lib/airake/tasks/air.rake
CHANGED
@@ -15,7 +15,7 @@ namespace :air do
|
|
15
15
|
desc "Test"
|
16
16
|
task :test => :clean do
|
17
17
|
ENV["DEBUG"] = "true" unless ENV.has_key?("DEBUG")
|
18
|
-
test_project = Airake::Project.new_from_rake(ENV,
|
18
|
+
test_project = Airake::Project.new_from_rake(ENV, :test)
|
19
19
|
Airake::Runner.run(test_project.amxmlc, :compile)
|
20
20
|
Airake::Runner.run(test_project.adl, :launch)
|
21
21
|
end
|
@@ -135,11 +135,11 @@ namespace :air do
|
|
135
135
|
desc "Clean"
|
136
136
|
task :clean do
|
137
137
|
project = Airake::Project.new_from_rake(ENV)
|
138
|
-
paths =
|
138
|
+
paths = project.to_clean
|
139
139
|
|
140
140
|
# Test
|
141
|
-
test_project = Airake::Project.new_from_rake(ENV,
|
142
|
-
paths +=
|
141
|
+
test_project = Airake::Project.new_from_rake(ENV, :test)
|
142
|
+
paths += project.to_clean
|
143
143
|
|
144
144
|
paths.each do |path|
|
145
145
|
FileUtils.rm(path, :verbose => true) if File.exist?(path)
|
data/lib/airake/version.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: airake
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2007-11-
|
6
|
+
version: 0.2.9
|
7
|
+
date: 2007-11-09 00:00:00 -05:00
|
8
8
|
summary: Tasks and generators for Adobe AIR apps
|
9
9
|
require_paths:
|
10
10
|
- lib
|