asrake 0.13.3 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
data/asrake.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = 'asrake'
4
- spec.version = '0.13.3'
4
+ spec.version = '0.14.0'
5
5
  spec.platform = Gem::Platform::RUBY
6
6
 
7
7
  spec.authors = ["Malachi Griffie"]
data/lib/asrake/adt.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'asrake/util'
2
- require 'asrake/base_task'
2
+ require 'asrake/base_executable'
3
3
  require 'nokogiri'
4
4
 
5
5
  module ASRake
6
- class Adt < BaseTask
6
+ class Adt < BaseExecutable
7
7
 
8
8
  include Rake::DSL
9
9
  include ASRake
@@ -38,6 +38,7 @@ class Adt < BaseTask
38
38
  attr_accessor :additional_args
39
39
 
40
40
  def initialize(file)
41
+ super
41
42
 
42
43
  self.storetype = "pkcs12"
43
44
  self.target = "air"
@@ -45,26 +46,6 @@ class Adt < BaseTask
45
46
 
46
47
  @keystore = "cert.p12"
47
48
  @application_descriptor = "application.xml"
48
-
49
- super(file)
50
-
51
- self.include_files.each do |value|
52
- files = Path::forward value.sub(' ', '/')
53
- files.sub!(/\.$/, "*")
54
- FileList[files].each {|file| Rake::FileTask.define_task self.output => file}
55
- end
56
-
57
- # add a prerequisite file task for all files included in the package
58
- #def include_files.<<(value)
59
- # super
60
- # files = Path::forward value.sub(' ', '/')
61
- # files.sub!(/\.$/, "*")
62
- # FileList[files].each {|file| puts @output; Rake::FileTask.define_task @output => file}
63
- #end
64
-
65
- create_keystore_task()
66
- create_application_descriptor_task()
67
-
68
49
  end
69
50
 
70
51
  # define named task first so if desc was called it will be attached to it instead of the file task
@@ -90,10 +71,10 @@ class Adt < BaseTask
90
71
  command << " -keystore #{self.keystore}"
91
72
  command << " -storepass #{self.storepass}"
92
73
  command << " -target #{target}" if target != nil && target != "air"
74
+ command << " #{additional_args}" if self.additional_args != nil
93
75
  command << " #{self.output}"
94
76
  command << " #{self.application_descriptor}"
95
77
  self.include_files.each {|entry| command << " -C #{entry}" }
96
- command << " #{additional_args}" if self.additional_args != nil
97
78
 
98
79
  status = run command, false
99
80
 
@@ -144,40 +125,40 @@ class Adt < BaseTask
144
125
  end
145
126
  end
146
127
 
147
- def keystore= value
148
- # clear prvious keystore task
149
- Rake::Task[@keystore].clear
150
- @keystore = value
151
- create_keystore_task()
152
- end
128
+ protected
153
129
 
154
- def application_descriptor= value
155
- # clear the previous task
156
- Rake::Task[@application_descriptor].clear
157
- @application_descriptor = value
158
- create_application_descriptor_task()
159
- end
130
+ def task_pre_invoke
131
+ super
160
132
 
161
- private
133
+ dependencies = FileList.new
134
+ self.include_files.each do |value|
135
+ dependencies.include(Path::forward value.sub(' ', '/').sub(/\.$/, "*"))
136
+ end
137
+ @task.enhance(dependencies) if !dependencies.empty?
162
138
 
163
- def create_application_descriptor_task
164
- if File.exists?(@application_descriptor)
165
- file self.output => @application_descriptor
139
+ if self.keystore != nil
140
+ file self.keystore do
141
+ run "#{FlexSDK::adt} -certificate -cn #{self.keystore_name} 1024-RSA #{self.keystore} #{self.storepass}"
142
+ puts "Certificate created at #{self.keystore} with password '#{self.storepass}'"
143
+ end
144
+ @task.enhance([self.keystore])
145
+ end
166
146
 
147
+ if self.application_descriptor != nil && File.exists?(self.application_descriptor)
148
+ @task.enhance([self.application_descriptor])
167
149
  #app_xml = Nokogiri::XML(File.read(@application_descriptor))
168
150
  #swf = app_xml.at_css("initialWindow > content").content.to_s
169
151
  #file self.output => swf
170
152
  #raise "Initial content in #{@application_descriptor} does not exist" if !File.exists?(swf)
171
153
  end
172
- end
173
-
174
- def create_keystore_task
175
- file self.keystore do
176
- run "#{FlexSDK::adt} -certificate -cn #{self.keystore_name} 1024-RSA #{self.keystore} #{self.storepass}"
177
- puts "Certificate created at #{self.keystore} with password '#{self.storepass}'"
178
- end
179
154
 
180
- file self.output => self.keystore
155
+ # add a prerequisite file task for all files included in the package
156
+ #def include_files.<<(value)
157
+ # super
158
+ # files = Path::forward value.sub(' ', '/')
159
+ # files.sub!(/\.$/, "*")
160
+ # FileList[files].each {|file| puts @output; Rake::FileTask.define_task @output => file}
161
+ #end
181
162
  end
182
163
 
183
164
  end
data/lib/asrake/asdoc.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  require 'asrake/util'
2
- require 'rake/tasklib'
3
2
  require 'nokogiri'
4
3
 
5
4
  # http://help.adobe.com/en_US/flex/using/WSd0ded3821e0d52fe1e63e3d11c2f44bc36-7ffa.html
6
5
 
7
6
  module ASRake
8
- class Asdoc < BaseTask
7
+ class Asdoc < BaseExecutable
9
8
 
10
9
  include Rake::DSL
11
10
  include ASRake
@@ -125,8 +124,6 @@ class Asdoc < BaseTask
125
124
  end
126
125
 
127
126
  @doc_sources = []
128
-
129
- yield self if block_given?
130
127
  end
131
128
 
132
129
  def add(args)
@@ -179,5 +176,22 @@ class Asdoc < BaseTask
179
176
  run("#{FlexSDK::asdoc} #{args}", true, &block)
180
177
  end
181
178
 
179
+ protected
180
+
181
+ def handle_execute_error code
182
+ end
183
+
184
+ def task_pre_invoke
185
+ super
186
+ # set dependencies on all .as and .mxml files in the source paths
187
+ dependencies = FileList.new
188
+ self.source_path.each do |path|
189
+ dependencies.include(Path::forward File.join(path, "**/*.as"))
190
+ dependencies.include(Path::forward File.join(path, "**/*.mxml"))
191
+ end
192
+ dependencies.include(self.library_path) if !self.library_path.empty?
193
+ @task.enhance(dependencies) if !dependencies.empty?
194
+ end
195
+
182
196
  end
183
197
  end
@@ -1,9 +1,9 @@
1
- require 'asrake/base_task'
1
+ require 'asrake/base_executable'
2
2
  require 'asrake/flexsdk'
3
3
  require 'nokogiri'
4
4
 
5
5
  module ASRake
6
- class BaseCompiler < BaseTask
6
+ class BaseCompiler < BaseExecutable
7
7
 
8
8
  include Rake::DSL
9
9
 
@@ -30,6 +30,8 @@ class BaseCompiler < BaseTask
30
30
  attr_accessor *@@args
31
31
 
32
32
  def initialize(file, exe_path)
33
+ super(file)
34
+
33
35
  @exe = exe_path
34
36
 
35
37
  @isAIR = false
@@ -40,21 +42,11 @@ class BaseCompiler < BaseTask
40
42
  @debug = false
41
43
  #include default flex-config
42
44
  @load_config = [ FlexSDK::flex_config ]
43
-
44
- super(file)
45
-
46
- # set dependencies on all .as and .mxml files in the source paths
47
- dependencies = FileList.new
48
- self.source_path.each do |path|
49
- dependencies.include(Path::forward File.join(path, "**/*.as"))
50
- dependencies.include(Path::forward File.join(path, "**/*.mxml"))
51
- end
52
- file(self.output => dependencies) if !dependencies.empty?
45
+ @additional_args = ""
53
46
 
54
47
  # allow setting source_path with '=' instead of '<<'
55
48
  # actually, no, this is really bad and confusing we should probably throw when they try to assign
56
49
  #self.source_path = [self.source_path] if self.source_path.is_a? String
57
-
58
50
  end
59
51
 
60
52
  # provide a more understandable alias
@@ -133,7 +125,7 @@ class BaseCompiler < BaseTask
133
125
  args << " +configname=air" if self.isAIR
134
126
 
135
127
  args << " -debug=#{debug}"
136
- args << " -source-path=#{Path::forward source_path.join(',')}" if !self.source_path.empty?
128
+ args << " -source-path+=#{Path::forward source_path.join(',')}" if !self.source_path.empty?
137
129
 
138
130
  # add the -load-config option if it is anything other than the default
139
131
  unless self.load_config.length == 1 && is_default_config?(self.load_config[0])
@@ -145,24 +137,46 @@ class BaseCompiler < BaseTask
145
137
  end
146
138
  end
147
139
 
148
- args << " -library-path=#{Path::forward library_path.join(',')}" if !self.library_path.empty?
149
- args << " -external-library-path=#{Path::forward external_library_path.join(',')}" if !self.external_library_path.empty?
150
- args << " -include-libraries=#{Path::forward include_libraries.join(',')}" if !self.include_libraries.empty?
140
+ args << " -library-path+=#{Path::forward library_path.join(',')}" if !self.library_path.empty?
141
+ args << " -external-library-path+=#{Path::forward external_library_path.join(',')}" if !self.external_library_path.empty?
142
+ args << " -include-libraries+=#{Path::forward include_libraries.join(',')}" if !self.include_libraries.empty?
151
143
 
152
144
  args << " -dump-config=#{Path::forward dump_config}" if self.dump_config != nil
153
145
 
154
- args << " #{additional_args}" if self.additional_args != nil
155
- #args << ' -include-file images\core_logo.png ..\nexuslib\code\etc\core_logo.png'
146
+ args << " #{additional_args}" if self.additional_args != nil && self.additional_args != ""
156
147
 
157
148
  return args
158
149
  end
159
150
 
160
151
  def execute
161
152
  puts "> #{@exe}#{generate_args}"
162
- run "#{@exe}#{generate_args}" do |line|
153
+ status = run "#{@exe}#{generate_args}", false do |line|
163
154
  puts "> #{line}"
164
155
  generate_error_message_tips(line)
165
156
  end
157
+
158
+ handle_execute_error status.exitstatus
159
+
160
+ raise "Operation exited with status #{status.exitstatus}" if status.exitstatus != 0
161
+ end
162
+
163
+ protected
164
+
165
+ def handle_execute_error code
166
+ end
167
+
168
+ def task_pre_invoke
169
+ super
170
+ # set dependencies on all .as and .mxml files in the source paths
171
+ dependencies = FileList.new
172
+ self.source_path.each do |path|
173
+ dependencies.include(Path::forward File.join(path, "**/*.as"))
174
+ dependencies.include(Path::forward File.join(path, "**/*.mxml"))
175
+ end
176
+ dependencies.include(self.library_path) if !self.library_path.empty?
177
+ dependencies.include(self.external_library_path) if !self.external_library_path.empty?
178
+ dependencies.include(self.include_libraries) if !self.include_libraries.empty?
179
+ @task.enhance(dependencies) if !dependencies.empty?
166
180
  end
167
181
 
168
182
  private
@@ -1,7 +1,8 @@
1
1
  require 'asrake/util'
2
+ require 'asrake/exe_task'
2
3
 
3
4
  module ASRake
4
- class BaseTask
5
+ class BaseExecutable
5
6
 
6
7
  include Rake::DSL
7
8
 
@@ -16,7 +17,7 @@ class BaseTask
16
17
  def initialize(file)
17
18
 
18
19
  raise "An output file must be provided" if file == nil
19
-
20
+
20
21
  @output = file.to_s
21
22
  # if the output path ends in a path separator, it is a directory
22
23
  if @output =~ /[\/\\]$/
@@ -28,19 +29,18 @@ class BaseTask
28
29
  @output_file = File.basename(@output)
29
30
  end
30
31
 
31
- yield self if block_given?
32
-
33
32
  # create file task for output
34
- file self.output do
33
+ @task = ASRake::ExeTask.define_task self.output do
35
34
  self.execute
36
- # TODO: Want to output this even if the dependencies are met and the task isn't run
37
- puts "#{Path::env self.output} (#{File.size(output)} bytes)" unless self.output_is_dir?
38
35
  end
39
36
 
37
+ @task.pre_invoke = method(:task_pre_invoke)
38
+ @task.post_invoke = method(:task_post_invoke)
39
+
40
40
  # create directory task for output
41
- if !output_is_dir?
41
+ if !self.output_is_dir?
42
42
  directory self.output_dir
43
- file self.output => self.output_dir
43
+ @task.enhance([self.output_dir])
44
44
  end
45
45
  end
46
46
 
@@ -63,7 +63,7 @@ class BaseTask
63
63
  @output
64
64
  end
65
65
 
66
- # this is probably a terrible idea
66
+ # used so we can add this task to a FileList. This is probably a terrible idea.
67
67
  def pathmap *args
68
68
  to_s.pathmap *args
69
69
  end
@@ -72,5 +72,18 @@ class BaseTask
72
72
  raise "Must define execute in subclass"
73
73
  end
74
74
 
75
+ protected
76
+
77
+ def task_pre_invoke
78
+ # only run once to add prereqs
79
+ @task.pre_invoke = nil
80
+ end
81
+
82
+ def task_post_invoke
83
+ puts "#{Path::env self.output} (#{File.size(self.output)} bytes)" unless self.output_is_dir?
84
+ # only run once incase invoked again
85
+ @task.post_invoke = nil
86
+ end
87
+
75
88
  end
76
89
  end
@@ -0,0 +1,20 @@
1
+ require 'asrake/util'
2
+ require 'rake/file_task'
3
+
4
+ module ASRake
5
+ class ExeTask < Rake::FileTask
6
+
7
+ attr_accessor :pre_invoke
8
+ attr_accessor :post_invoke
9
+
10
+ def initialize(task_name, app)
11
+ super
12
+ end
13
+
14
+ def invoke_with_call_chain(task_args, invocation_chain)
15
+ pre_invoke.call() if pre_invoke != nil
16
+ super
17
+ post_invoke.call() if post_invoke != nil
18
+ end
19
+ end
20
+ end
data/lib/asrake/mxmlc.rb CHANGED
@@ -6,10 +6,32 @@ module ASRake
6
6
  class Mxmlc < BaseCompiler
7
7
 
8
8
  include Rake::DSL
9
+
10
+ attr_accessor :file_specs
9
11
 
10
12
  def initialize(swf_file)
11
13
  super(swf_file, FlexSDK::mxmlc)
12
14
  end
13
15
 
16
+ def generate_args
17
+ mxmlc = super
18
+
19
+ mxmlc << " -file-specs=#{file_specs}" if file_specs != nil
20
+
21
+ return mxmlc
22
+ end
23
+
24
+ protected
25
+
26
+ def handle_execute_error code
27
+ case code
28
+ when 1
29
+ raise "A target file can be specified by setting file_specs to a valid .as or .mxml file.\n" +
30
+ "eg:\n" +
31
+ " swf = ASRake::Mxmlc.new #{output}\n" +
32
+ " swf.file_specs = 'src/Main.as'" if file_specs == nil
33
+ end
34
+ end
35
+
14
36
  end
15
37
  end
@@ -1,9 +1,9 @@
1
1
  require 'asrake/util'
2
- require 'asrake/base_task'
2
+ require 'asrake/base_executable'
3
3
  require 'zip/zip'
4
4
 
5
5
  module ASRake
6
- class Package < BaseTask
6
+ class Package < BaseExecutable
7
7
 
8
8
  include Rake::DSL
9
9
 
data/lib/asrake/util.rb CHANGED
@@ -65,8 +65,8 @@ def run(command, abort_on_failure = true)
65
65
 
66
66
  if $?.exitstatus != 0
67
67
  msg = "Operation exited with status #{$?.exitstatus}"
68
- fail msg if abort_on_failure
69
- puts msg
68
+ raise msg if abort_on_failure
69
+ #puts msg
70
70
  end
71
71
 
72
72
  return $?
@@ -1,9 +1,9 @@
1
- require 'rake/tasklib'
2
-
3
1
  require 'asrake/version/version'
4
2
 
5
3
  module ASRake
6
- class VersionTask < Rake::TaskLib
4
+ class VersionTask
5
+
6
+ include Rake::DSL
7
7
 
8
8
  attr_accessor :filename
9
9
  attr_accessor :filetype
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.3
4
+ version: 0.14.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-27 00:00:00.000000000 Z
12
+ date: 2012-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -79,8 +79,9 @@ files:
79
79
  - lib/asrake/adt.rb
80
80
  - lib/asrake/asdoc.rb
81
81
  - lib/asrake/base_compiler.rb
82
- - lib/asrake/base_task.rb
82
+ - lib/asrake/base_executable.rb
83
83
  - lib/asrake/compc.rb
84
+ - lib/asrake/exe_task.rb
84
85
  - lib/asrake/file_utils.rb
85
86
  - lib/asrake/flexsdk.rb
86
87
  - lib/asrake/mxmlc.rb