flex-sdk 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +0 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +29 -0
- data/Rakefile +28 -20
- data/VERSION +1 -1
- data/bin/flex-sdk-copylocale +1 -1
- data/bin/flex-sdk-path +1 -1
- data/bin/flex-sdk-prime +1 -1
- data/flex-sdk.gemspec +30 -10
- data/lib/flex_compiler.rb +180 -0
- data/lib/{flex-sdk.rb → flex_sdk.rb} +0 -0
- data/lib/flex_sdk/flex_sdk.rb +82 -0
- data/lib/opt_builder.rb +86 -0
- data/lib/shell.rb +7 -0
- data/spec/flex-sdk_spec.rb +8 -0
- data/spec/opts-builder_spec.rb +20 -0
- data/spec/spec.opts +1 -0
- data/{test/helper.rb → spec/spec_helper.rb} +5 -7
- data/spec/test.rb +49 -0
- metadata +71 -15
- data/test/test_flex-sdk.rb +0 -7
data/.document
CHANGED
File without changes
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.0.1)
|
5
|
+
gemcutter (0.6.1)
|
6
|
+
git (1.2.5)
|
7
|
+
i18n (0.4.2)
|
8
|
+
jeweler (1.4.0)
|
9
|
+
gemcutter (>= 0.1.0)
|
10
|
+
git (>= 1.2.5)
|
11
|
+
rubyforge (>= 2.0.0)
|
12
|
+
json_pure (1.4.6)
|
13
|
+
rake (0.8.7)
|
14
|
+
rspec (1.3.1)
|
15
|
+
rubyforge (2.0.4)
|
16
|
+
json_pure (>= 1.1.7)
|
17
|
+
thoughtbot-shoulda (2.11.1)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
activesupport
|
24
|
+
bundler
|
25
|
+
i18n
|
26
|
+
jeweler
|
27
|
+
rake
|
28
|
+
rspec (< 2)
|
29
|
+
thoughtbot-shoulda
|
data/Rakefile
CHANGED
@@ -1,53 +1,61 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
3
|
|
4
|
+
|
4
5
|
begin
|
5
6
|
require 'jeweler'
|
6
7
|
Jeweler::Tasks.new do |gem|
|
7
8
|
gem.name = "flex-sdk"
|
8
|
-
gem.summary = %Q{Flex SDK Gem}
|
9
|
-
gem.description = %Q{Flex SDK Gem for redistribution to build servers and developers}
|
9
|
+
gem.summary = %Q{Flex SDK Gem and Thor Built utilities}
|
10
|
+
gem.description = %Q{Flex SDK Gem for redistribution to build servers and other developers. Also provides a simple DSL for calling Mxmlc and Compc from Thor tasks}
|
10
11
|
gem.email = "jonathan.hoskin@visfleet.com"
|
11
12
|
gem.homepage = "http://github.com/visfleet/flex-sdk"
|
12
|
-
gem.authors = ["Jonathan Hoskin"]
|
13
|
+
gem.authors = ["Jonathan Hoskin", "Rasheed Abdul-Aziz"]
|
14
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
13
15
|
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
|
-
|
16
|
+
gem.add_dependency "i18n"
|
17
|
+
gem.add_dependency "activesupport"
|
15
18
|
end
|
16
19
|
Jeweler::GemcutterTasks.new
|
17
20
|
rescue LoadError
|
18
21
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
22
|
end
|
20
23
|
|
21
|
-
require 'rake/
|
22
|
-
Rake::
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
require 'spec/rake/spectask'
|
25
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
26
|
+
spec.libs << 'lib' << 'spec'
|
27
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
28
|
+
end
|
29
|
+
|
30
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
31
|
+
spec.libs << 'lib' << 'spec'
|
32
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
33
|
+
spec.rcov = true
|
26
34
|
end
|
27
35
|
|
36
|
+
task :spec => :check_dependencies
|
37
|
+
|
28
38
|
begin
|
29
|
-
require '
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
39
|
+
require 'reek/adapters/rake_task'
|
40
|
+
Reek::RakeTask.new do |t|
|
41
|
+
t.fail_on_error = true
|
42
|
+
t.verbose = false
|
43
|
+
t.source_files = 'lib/**/*.rb'
|
34
44
|
end
|
35
45
|
rescue LoadError
|
36
|
-
task :
|
37
|
-
abort "
|
46
|
+
task :reek do
|
47
|
+
abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
|
38
48
|
end
|
39
49
|
end
|
40
50
|
|
41
|
-
task :
|
42
|
-
|
43
|
-
task :default => :test
|
51
|
+
task :default => :spec
|
44
52
|
|
45
53
|
require 'rake/rdoctask'
|
46
54
|
Rake::RDocTask.new do |rdoc|
|
47
55
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
56
|
|
49
57
|
rdoc.rdoc_dir = 'rdoc'
|
50
|
-
rdoc.title = "
|
58
|
+
rdoc.title = "test #{version}"
|
51
59
|
rdoc.rdoc_files.include('README*')
|
52
60
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
61
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bin/flex-sdk-copylocale
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib')) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
4
|
-
require '
|
4
|
+
require 'flex_sdk'
|
5
5
|
|
6
6
|
flexsdk = FlexSDK.new
|
7
7
|
config = flexsdk.config
|
data/bin/flex-sdk-path
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib')) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
4
|
-
require '
|
4
|
+
require 'flex_sdk'
|
5
5
|
|
6
6
|
flexsdk = FlexSDK.new
|
7
7
|
config = flexsdk.config
|
data/bin/flex-sdk-prime
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib')) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
4
|
-
require '
|
4
|
+
require 'flex_sdk'
|
5
5
|
|
6
6
|
flexsdk = FlexSDK.new
|
7
7
|
config = flexsdk.config
|
data/flex-sdk.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{flex-sdk}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Jonathan Hoskin"]
|
12
|
-
s.date = %q{2010-11-
|
13
|
-
s.description = %q{Flex SDK Gem for redistribution to build servers and developers}
|
11
|
+
s.authors = ["Jonathan Hoskin", "Rasheed Abdul-Aziz"]
|
12
|
+
s.date = %q{2010-11-09}
|
13
|
+
s.description = %q{Flex SDK Gem for redistribution to build servers and other developers. Also provides a simple DSL for calling Mxmlc and Compc from Thor tasks}
|
14
14
|
s.email = %q{jonathan.hoskin@visfleet.com}
|
15
15
|
s.executables = ["flex-sdk-copylocale", "flex-sdk-path", "flex-sdk-prime"]
|
16
16
|
s.extra_rdoc_files = [
|
@@ -20,6 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.files = [
|
21
21
|
".document",
|
22
22
|
".gitignore",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
23
25
|
"LICENSE",
|
24
26
|
"README.markdown",
|
25
27
|
"Rakefile",
|
@@ -29,18 +31,27 @@ Gem::Specification.new do |s|
|
|
29
31
|
"bin/flex-sdk-prime",
|
30
32
|
"config.yml",
|
31
33
|
"flex-sdk.gemspec",
|
32
|
-
"lib/
|
33
|
-
"
|
34
|
-
"
|
34
|
+
"lib/flex_compiler.rb",
|
35
|
+
"lib/flex_sdk.rb",
|
36
|
+
"lib/flex_sdk/flex_sdk.rb",
|
37
|
+
"lib/opt_builder.rb",
|
38
|
+
"lib/shell.rb",
|
39
|
+
"spec/flex-sdk_spec.rb",
|
40
|
+
"spec/opts-builder_spec.rb",
|
41
|
+
"spec/spec.opts",
|
42
|
+
"spec/spec_helper.rb",
|
43
|
+
"spec/test.rb"
|
35
44
|
]
|
36
45
|
s.homepage = %q{http://github.com/visfleet/flex-sdk}
|
37
46
|
s.rdoc_options = ["--charset=UTF-8"]
|
38
47
|
s.require_paths = ["lib"]
|
39
48
|
s.rubygems_version = %q{1.3.7}
|
40
|
-
s.summary = %q{Flex SDK Gem}
|
49
|
+
s.summary = %q{Flex SDK Gem and Thor Built utilities}
|
41
50
|
s.test_files = [
|
42
|
-
"
|
43
|
-
"
|
51
|
+
"spec/flex-sdk_spec.rb",
|
52
|
+
"spec/opts-builder_spec.rb",
|
53
|
+
"spec/spec_helper.rb",
|
54
|
+
"spec/test.rb"
|
44
55
|
]
|
45
56
|
|
46
57
|
if s.respond_to? :specification_version then
|
@@ -48,12 +59,21 @@ Gem::Specification.new do |s|
|
|
48
59
|
s.specification_version = 3
|
49
60
|
|
50
61
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
62
|
+
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
51
63
|
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
64
|
+
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
65
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
52
66
|
else
|
67
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
53
68
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
69
|
+
s.add_dependency(%q<i18n>, [">= 0"])
|
70
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
54
71
|
end
|
55
72
|
else
|
73
|
+
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
56
74
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
75
|
+
s.add_dependency(%q<i18n>, [">= 0"])
|
76
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
57
77
|
end
|
58
78
|
end
|
59
79
|
|
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'flex_sdk'
|
2
|
+
require 'opt_builder'
|
3
|
+
require 'shell'
|
4
|
+
|
5
|
+
module FlexCompiler
|
6
|
+
|
7
|
+
# Module Methods
|
8
|
+
|
9
|
+
def self.artifact_root
|
10
|
+
"./build/"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.included(base)
|
14
|
+
base.extend(ClassMethods)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Class Methods
|
18
|
+
module ClassMethods
|
19
|
+
def artifact(type, path_fragment)
|
20
|
+
(@artifacts ||= {})[type.to_sym] = path_fragment
|
21
|
+
end
|
22
|
+
|
23
|
+
def artifact_path(type)
|
24
|
+
File.join(FlexCompiler.artifact_root,@artifacts[type.to_sym])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def artifact_path(type)
|
29
|
+
self.class.send(:artifact_path,type)
|
30
|
+
end
|
31
|
+
|
32
|
+
def compc(opts="")
|
33
|
+
command = "#{Shell.escape File.join(sdk_dir,"bin","compc")} #{opts.to_s}"
|
34
|
+
puts command
|
35
|
+
`#{command}`
|
36
|
+
end
|
37
|
+
|
38
|
+
def mxmlc
|
39
|
+
puts ("mxmlc")
|
40
|
+
end
|
41
|
+
|
42
|
+
def sdk_dir
|
43
|
+
sdk_config["sdk_dir"]
|
44
|
+
end
|
45
|
+
|
46
|
+
def sdk_config
|
47
|
+
FlexSDK.new.config
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
class GenericOpts < OptBuilder
|
52
|
+
single :benchmark
|
53
|
+
single :accessible, { :alias_for => "compiler.accessible" }
|
54
|
+
single :encoding, { :alias_for => "compiler.actionscript-file-encoding" }
|
55
|
+
single :allow_source_path_overlap, { :alias_for => "compiler.allow-source-path-overlap" }
|
56
|
+
single :as3, { :alias_for => "compiler.as3" }
|
57
|
+
single :context_root, { :alias_for => "compiler.context-root" }
|
58
|
+
single :debug, { :alias_for => "compiler.debug" }
|
59
|
+
collection :default_css_files, { :alias_for => "compiler.defaults-css-files" }
|
60
|
+
single :default_css_url, { :alias_for => "compiler.defaults-css-url" }
|
61
|
+
single :define, { :alias_for => "compiler.define" }
|
62
|
+
single :es, { :alias_for => "compiler.es" }
|
63
|
+
collection :external_library_path, { :alias_for => "compiler.external-library-path" }
|
64
|
+
single :advanced_anti_aliasing, { :alias_for => "compiler.fonts.advanced-anti-aliasing" }
|
65
|
+
single :flash_type, { :alias_for => "compiler.fonts.flash-type" }
|
66
|
+
single :language_range, { :alias_for => "compiler.fonts.languages.language-range" }
|
67
|
+
single :local_fonts_snapshot, { :alias_for => "compiler.fonts.local-fonts-snapshot" }
|
68
|
+
collection :font_managers, { :alias_for => "compiler.fonts.managers" }
|
69
|
+
single :max_cached_fonts, { :alias_for => "compiler.fonts.max-cached-fonts" }
|
70
|
+
single :max_glyphs, { :alias_for => "compiler.fonts.max-glyphs-per-face" }
|
71
|
+
single :headless, { :alias_for => "compiler.headless-server" }
|
72
|
+
collection :include_libraries, { :alias_for => "compiler.include-libraries" }
|
73
|
+
single :incremental, { :alias_for => "compiler.incremental" }
|
74
|
+
single :keep_type_selectors, { :alias_for => "compiler.keep-all-type-selectors" }
|
75
|
+
collection :keep_metadata, { :alias_for => "compiler.keep-as3-metadata" }
|
76
|
+
single :keep_generated, { :alias_for => "compiler.keep-generated-actionscript" }
|
77
|
+
collection :library_path, { :alias_for => "compiler.library-path" }
|
78
|
+
collection :locale, { :alias_for => "compiler.locale" }
|
79
|
+
single :compatibility_version, { :alias_for => "compiler.mxml.compatibility-version" }
|
80
|
+
single :namespace, { :alias_for => "compiler.namespaces.namespace" }
|
81
|
+
single :optimize, { :alias_for => "compiler.optimize" }
|
82
|
+
single :services, { :alias_for => "compiler.services" }
|
83
|
+
single :show_actionscript_warnings, { :alias_for => "compiler.show-actionscript-warnings" }
|
84
|
+
single :show_binding_warnings, { :alias_for => "compiler.show-binding-warnings" }
|
85
|
+
single :show_shadowed_device_font_warnings, { :alias_for => "compiler.show-shadowed-device-font-warnings" }
|
86
|
+
single :show_unused_type_selector_warnings, { :alias_for => "compiler.show-unused-type-selector-warnings" }
|
87
|
+
collection :source_path, { :alias_for => "compiler.source-path" }
|
88
|
+
single :strict, { :alias_for => "compiler.strict" }
|
89
|
+
collection :theme, { :alias_for => "compiler.theme" }
|
90
|
+
single :use_resource_bundle_metadata, { :alias_for => "compiler.use-resource-bundle-metadata" }
|
91
|
+
single :verbose_stacktraces, { :alias_for => "compiler.verbose-stacktraces" }
|
92
|
+
single :warn_array_tostring_changes, { :alias_for => "compiler.warn-array-tostring-changes" }
|
93
|
+
single :warn_assignment_within_conditional, { :alias_for => "compiler.warn-assignment-within-conditional" }
|
94
|
+
single :warn_bad_array_cast, { :alias_for => "compiler.warn-bad-array-cast" }
|
95
|
+
single :warn_bad_bool_assignment, { :alias_for => "compiler.warn-bad-bool-assignment" }
|
96
|
+
single :warn_bad_date_cast, { :alias_for => "compiler.warn-bad-date-cast" }
|
97
|
+
single :warn_bad_es3_type_method, { :alias_for => "compiler.warn-bad-es3-type-method" }
|
98
|
+
single :warn_bad_es3_type_prop, { :alias_for => "compiler.warn-bad-es3-type-prop" }
|
99
|
+
single :warn_bad_nan_comparison, { :alias_for => "compiler.warn-bad-nan-comparison" }
|
100
|
+
single :warn_bad_null_assignment, { :alias_for => "compiler.warn-bad-null-assignment" }
|
101
|
+
single :warn_bad_null_comparison, { :alias_for => "compiler.warn-bad-null-comparison" }
|
102
|
+
single :warn_bad_undefined_comparison, { :alias_for => "compiler.warn-bad-undefined-comparison" }
|
103
|
+
single :warn_boolean_constructor_with_no_args, { :alias_for => "compiler.warn-boolean-constructor-with-no-args" }
|
104
|
+
single :warn_changes_in_resolve, { :alias_for => "compiler.warn-changes-in-resolve" }
|
105
|
+
single :warn_class_is_sealed, { :alias_for => "compiler.warn-class-is-sealed" }
|
106
|
+
single :warn_const_not_initialized, { :alias_for => "compiler.warn-const-not-initialized" }
|
107
|
+
single :warn_constructor_returns_value, { :alias_for => "compiler.warn-constructor-returns-value" }
|
108
|
+
single :warn_deprecated_event_handler_error, { :alias_for => "compiler.warn-deprecated-event-handler-error" }
|
109
|
+
single :warn_deprecated_function_error, { :alias_for => "compiler.warn-deprecated-function-error" }
|
110
|
+
single :warn_deprecated_property_error, { :alias_for => "compiler.warn-deprecated-property-error" }
|
111
|
+
single :warn_duplicate_argument_names, { :alias_for => "compiler.warn-duplicate-argument-names" }
|
112
|
+
single :warn_duplicate_variable_def, { :alias_for => "compiler.warn-duplicate-variable-def" }
|
113
|
+
single :warn_for_var_in_changes, { :alias_for => "compiler.warn-for-var-in-changes" }
|
114
|
+
single :warn_import_hides_class, { :alias_for => "compiler.warn-import-hides-class" }
|
115
|
+
single :warn_instance_of_changes, { :alias_for => "compiler.warn-instance-of-changes" }
|
116
|
+
single :warn_internal_error, { :alias_for => "compiler.warn-internal-error" }
|
117
|
+
single :warn_level_not_supported, { :alias_for => "compiler.warn-level-not-supported" }
|
118
|
+
single :warn_missing_namespace_decl, { :alias_for => "compiler.warn-missing-namespace-decl" }
|
119
|
+
single :warn_negative_uint_literal, { :alias_for => "compiler.warn-negative-uint-literal" }
|
120
|
+
single :warn_no_constructor, { :alias_for => "compiler.warn-no-constructor" }
|
121
|
+
single :warn_no_explicit_super_call_in_constructor, { :alias_for => "compiler.warn-no-explicit-super-call-in-constructor" }
|
122
|
+
single :warn_no_type_decl, { :alias_for => "compiler.warn-no-type-decl" }
|
123
|
+
single :warn_number_from_string_changes, { :alias_for => "compiler.warn-number-from-string-changes" }
|
124
|
+
single :warn_scoping_change_in_this, { :alias_for => "compiler.warn-scoping-change-in-this" }
|
125
|
+
single :warn_slow_text_field_addition, { :alias_for => "compiler.warn-slow-text-field-addition" }
|
126
|
+
single :warn_unlikely_function_value, { :alias_for => "compiler.warn-unlikely-function-value" }
|
127
|
+
single :warn_xml_class_has_changed, { :alias_for => "compiler.warn-xml-class-has-changed" }
|
128
|
+
single :debug_password
|
129
|
+
single :default_background_color
|
130
|
+
single :default_frame_rate
|
131
|
+
single :default_script_limits
|
132
|
+
single :default_size
|
133
|
+
single :dump_config
|
134
|
+
collection :externs
|
135
|
+
collection :frame, { :alias_for => "frames.frame" }
|
136
|
+
collection :include_resource_bundles
|
137
|
+
collection :includes
|
138
|
+
single :license, { :alias_for => "licenses.license" }
|
139
|
+
single :link_report
|
140
|
+
collection :load_config
|
141
|
+
single :load_externs
|
142
|
+
single :metadata_contributor, { :alias_for => "metadata.contributor" }
|
143
|
+
single :metadata_creator, { :alias_for => "metadata.creator" }
|
144
|
+
single :metadata_date, { :alias_for => "metadata.date" }
|
145
|
+
single :metadata_description, { :alias_for => "metadata.description" }
|
146
|
+
single :metadata_language, { :alias_for => "metadata.language" }
|
147
|
+
single :metadata_localized_description, { :alias_for => "metadata.localized-description" }
|
148
|
+
single :metadata_localized_title, { :alias_for => "metadata.localized-title" }
|
149
|
+
single :metadata_publisher, { :alias_for => "metadata.publisher" }
|
150
|
+
single :metadata_title, { :alias_for => "metadata.title" }
|
151
|
+
single :output
|
152
|
+
single :raw_metadata
|
153
|
+
single :resource_bundle_list
|
154
|
+
collection :runtime_shared_libraries
|
155
|
+
single :runtime_shared_library_path
|
156
|
+
single :static_link_runtime_shared_libraries
|
157
|
+
single :target_player
|
158
|
+
single :use_network
|
159
|
+
single :verify_digests
|
160
|
+
single :version
|
161
|
+
single :warnings
|
162
|
+
end
|
163
|
+
|
164
|
+
class CompcOpts < GenericOpts
|
165
|
+
single :compute_digest
|
166
|
+
single :directory
|
167
|
+
collection :include_classes
|
168
|
+
collection :include_file
|
169
|
+
single :include_lookup_only
|
170
|
+
collection :include_namespaces
|
171
|
+
collection :include_sources
|
172
|
+
single :include_stylesheet
|
173
|
+
end
|
174
|
+
|
175
|
+
class MxmlcOpts < GenericOpts
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
|
File without changes
|
@@ -0,0 +1,82 @@
|
|
1
|
+
class FlexSDK
|
2
|
+
|
3
|
+
# Create a hash of configuration objects, some from config.yml, the rest figured out
|
4
|
+
def config
|
5
|
+
require 'yaml'
|
6
|
+
config = YAML.load_file(File.expand_path(File.join((File.dirname(__FILE__)), "..", "config.yml")))
|
7
|
+
config_hash = config["flex-sdk"]
|
8
|
+
|
9
|
+
# These variables are provided by config.yml
|
10
|
+
sdk_ver = config_hash["sdk_ver"]
|
11
|
+
vendor_path = config_hash["vendor_path"]
|
12
|
+
cdn_path = config_hash["cdn_path"]
|
13
|
+
|
14
|
+
# These variables are determined at runtime and combined into one hash
|
15
|
+
sdk_name = "flex_sdk_" + sdk_ver
|
16
|
+
config_hash["sdk_name"] = sdk_name
|
17
|
+
sdk_zipfile = sdk_name + ".zip"
|
18
|
+
config_hash["sdk_zipfile"] = sdk_zipfile
|
19
|
+
config_hash["cdn_file"] = cdn_path + sdk_zipfile
|
20
|
+
dest_dir = File.expand_path(File.join((File.dirname(__FILE__)), "..", vendor_path))
|
21
|
+
config_hash["dest_dir"] = dest_dir
|
22
|
+
config_hash["dest_file"] = File.join(dest_dir, sdk_zipfile)
|
23
|
+
config_hash["sdk_dir"] = File.join(dest_dir, sdk_name)
|
24
|
+
|
25
|
+
config_hash
|
26
|
+
end
|
27
|
+
|
28
|
+
# Return the full path to the SDK dir, so other things/people can use it
|
29
|
+
def sdk_dir
|
30
|
+
config = self.config
|
31
|
+
sdk_dir = config["sdk_dir"]
|
32
|
+
end
|
33
|
+
|
34
|
+
# Download the SDK zip file to the gem
|
35
|
+
def download(config)
|
36
|
+
|
37
|
+
dest_dir = config["dest_dir"]
|
38
|
+
dest_file = config["dest_file"]
|
39
|
+
cdn_file = config["cdn_file"]
|
40
|
+
|
41
|
+
puts "\n"
|
42
|
+
unless File.file?(dest_file)
|
43
|
+
puts "Downloading SDK\n\tFrom:\t#{cdn_file}\n\tTo:\t#{dest_file}\n\n"
|
44
|
+
`curl #{cdn_file} --create-dirs -o #{dest_file} `
|
45
|
+
if $?.to_i != 0
|
46
|
+
raise "Failed to download Flex SDK\n\n"
|
47
|
+
end
|
48
|
+
else
|
49
|
+
puts "Won't download SDK, file #{dest_file} already exists"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Unzip the downloaded zip file into the target dir
|
54
|
+
def unzip(config)
|
55
|
+
sdk_dir = config["sdk_dir"]
|
56
|
+
dest_file = config["dest_file"]
|
57
|
+
|
58
|
+
puts "\n"
|
59
|
+
|
60
|
+
unless File.directory?(sdk_dir)
|
61
|
+
puts "Unzipping SDK\n\tFrom:\t#{dest_file}\n\tTo:\t#{sdk_dir}/\n\n"
|
62
|
+
`unzip #{dest_file} -d #{sdk_dir}`
|
63
|
+
if $?.to_i != 0
|
64
|
+
raise "Failed to unzip Flex SDK\n\n"
|
65
|
+
end
|
66
|
+
else
|
67
|
+
puts "Won't unzip SDK, directory #{sdk_dir}/ already exists\n\n"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Perform the copylocale step
|
72
|
+
def copylocale(config)
|
73
|
+
sdk_name = config["sdk_dir"]
|
74
|
+
`#{sdk_dir}/bin/copylocale en_US en_NZ`
|
75
|
+
unless $?.to_i != 0
|
76
|
+
puts "INFO: Process copylocale completed successfully"
|
77
|
+
else
|
78
|
+
raise "ERROR: Process copylocale FAILED"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
data/lib/opt_builder.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'active_support/core_ext'
|
2
|
+
require 'shell'
|
3
|
+
|
4
|
+
class OptBuilder
|
5
|
+
|
6
|
+
@@single_opts = []
|
7
|
+
@@collection_opts = []
|
8
|
+
|
9
|
+
def self.single(sym,opts={})
|
10
|
+
attr_writer sym
|
11
|
+
|
12
|
+
@@single_opts << {
|
13
|
+
:sym => sym,
|
14
|
+
:alias_for => opts[:alias_for] || sym.to_s.dasherize
|
15
|
+
}
|
16
|
+
|
17
|
+
self.class_eval do
|
18
|
+
define_method sym do
|
19
|
+
self.send(:instance_variable_get,"@#{sym.to_s}") || opts[:default]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.collection(sym,opts={})
|
26
|
+
attr_writer sym
|
27
|
+
|
28
|
+
@@collection_opts << {
|
29
|
+
:sym => sym,
|
30
|
+
:force_restart => opts[:force_restart],
|
31
|
+
:alias_for => opts[:alias_for] || sym.to_s.dasherize
|
32
|
+
}
|
33
|
+
|
34
|
+
self.class_eval do
|
35
|
+
define_method sym do
|
36
|
+
value = self.send(:instance_variable_get,"@#{sym.to_s}") || []
|
37
|
+
self.send(:instance_variable_set,"@#{sym.to_s}", value)
|
38
|
+
value
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def value_as_option_value(value)
|
45
|
+
# todo:
|
46
|
+
# Escape strings for command line
|
47
|
+
# leave numbers alone
|
48
|
+
# booleans?
|
49
|
+
#
|
50
|
+
# arrays, treat each element as a value then join with spaces
|
51
|
+
|
52
|
+
|
53
|
+
return value_array_as_option_value(value) if value.is_a? Array
|
54
|
+
|
55
|
+
Shell.escape value
|
56
|
+
end
|
57
|
+
|
58
|
+
def value_array_as_option_value(value_array)
|
59
|
+
ary = value_array.map do |value|
|
60
|
+
value_as_option_value(value)
|
61
|
+
end
|
62
|
+
|
63
|
+
ary.join " "
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_s
|
67
|
+
opts = @@single_opts.map do |hash|
|
68
|
+
sym = hash[:sym]
|
69
|
+
"-#{hash[:alias_for]}=#{value_as_option_value(send(sym))}" unless send(sym).nil?
|
70
|
+
end
|
71
|
+
|
72
|
+
collections = @@collection_opts.each do |hash|
|
73
|
+
sym = hash[:sym];
|
74
|
+
restart = hash[:force_restart]
|
75
|
+
add_char = ""
|
76
|
+
opts += send(sym).map do |value|
|
77
|
+
add_char = "+" unless restart
|
78
|
+
restart = false if restart
|
79
|
+
"-#{hash[:alias_for]}#{add_char}=#{value_as_option_value(value)}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
opts.reject{ |item| item.nil? }.join " "
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/lib/shell.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require "opt_builder"
|
3
|
+
|
4
|
+
describe OptBuilder, "when first created" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@opt_instance = OptBuilder.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "lets me describe singular command line options" do
|
11
|
+
OptBuilder.should respond_to "single_opt"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "lets me assign values to singular command line options" do
|
15
|
+
@opt_instance.single_opt :option
|
16
|
+
@opt_instance.should respond_to "option"
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
-
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'spec'
|
4
|
+
require 'spec/autorun'
|
8
5
|
|
9
|
-
|
6
|
+
Spec::Runner.configure do |config|
|
7
|
+
|
10
8
|
end
|
data/spec/test.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'lib/opt_builder'
|
2
|
+
|
3
|
+
# This is my hideous test script until I have a moment to grok testing
|
4
|
+
# "class methods by extension" in rspec
|
5
|
+
|
6
|
+
class Opts < OptBuilder
|
7
|
+
single :foo, { :default => "default" }
|
8
|
+
single :bar
|
9
|
+
single :ninkum_poop
|
10
|
+
collection :grapple_boo
|
11
|
+
collection :grapple_bee, { :force_restart => true }
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
puts "\ndefaults create output"
|
16
|
+
|
17
|
+
a = Opts.new
|
18
|
+
puts a.to_s
|
19
|
+
|
20
|
+
puts "\ndefaults and others can be overridden (and we dasherize opts)"
|
21
|
+
|
22
|
+
a = Opts.new
|
23
|
+
a.foo = "hi"
|
24
|
+
a.bar = "there"
|
25
|
+
a.ninkum_poop = 1
|
26
|
+
puts a.to_s
|
27
|
+
|
28
|
+
|
29
|
+
puts "\ncollections work, just 1"
|
30
|
+
a = Opts.new
|
31
|
+
a.grapple_boo << "nana"
|
32
|
+
puts a.to_s
|
33
|
+
|
34
|
+
puts "\ncollections work"
|
35
|
+
a = Opts.new
|
36
|
+
a.grapple_boo << "nana"
|
37
|
+
a.grapple_boo << "bana"
|
38
|
+
a.grapple_boo << "banana"
|
39
|
+
a.grapple_boo << "mascouri"
|
40
|
+
puts a.to_s
|
41
|
+
|
42
|
+
puts "\ncollections work with force restart"
|
43
|
+
a = Opts.new
|
44
|
+
a.grapple_bee << "nana"
|
45
|
+
a.grapple_bee << "bana"
|
46
|
+
a.grapple_bee << "banana"
|
47
|
+
a.grapple_bee << "mascouri"
|
48
|
+
puts a.to_s
|
49
|
+
|
metadata
CHANGED
@@ -1,27 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flex-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan Hoskin
|
14
|
+
- Rasheed Abdul-Aziz
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-09 00:00:00 +13:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
23
|
+
type: :development
|
24
|
+
name: rspec
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
hash: 13
|
32
|
+
segments:
|
33
|
+
- 1
|
34
|
+
- 2
|
35
|
+
- 9
|
36
|
+
version: 1.2.9
|
37
|
+
requirement: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
type: :development
|
22
40
|
name: thoughtbot-shoulda
|
23
41
|
prerelease: false
|
24
|
-
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
25
43
|
none: false
|
26
44
|
requirements:
|
27
45
|
- - ">="
|
@@ -30,9 +48,36 @@ dependencies:
|
|
30
48
|
segments:
|
31
49
|
- 0
|
32
50
|
version: "0"
|
33
|
-
|
34
|
-
|
35
|
-
|
51
|
+
requirement: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
type: :runtime
|
54
|
+
name: i18n
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
requirement: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
type: :runtime
|
68
|
+
name: activesupport
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
requirement: *id004
|
80
|
+
description: Flex SDK Gem for redistribution to build servers and other developers. Also provides a simple DSL for calling Mxmlc and Compc from Thor tasks
|
36
81
|
email: jonathan.hoskin@visfleet.com
|
37
82
|
executables:
|
38
83
|
- flex-sdk-copylocale
|
@@ -46,6 +91,8 @@ extra_rdoc_files:
|
|
46
91
|
files:
|
47
92
|
- .document
|
48
93
|
- .gitignore
|
94
|
+
- Gemfile
|
95
|
+
- Gemfile.lock
|
49
96
|
- LICENSE
|
50
97
|
- README.markdown
|
51
98
|
- Rakefile
|
@@ -55,9 +102,16 @@ files:
|
|
55
102
|
- bin/flex-sdk-prime
|
56
103
|
- config.yml
|
57
104
|
- flex-sdk.gemspec
|
58
|
-
- lib/
|
59
|
-
-
|
60
|
-
-
|
105
|
+
- lib/flex_compiler.rb
|
106
|
+
- lib/flex_sdk.rb
|
107
|
+
- lib/flex_sdk/flex_sdk.rb
|
108
|
+
- lib/opt_builder.rb
|
109
|
+
- lib/shell.rb
|
110
|
+
- spec/flex-sdk_spec.rb
|
111
|
+
- spec/opts-builder_spec.rb
|
112
|
+
- spec/spec.opts
|
113
|
+
- spec/spec_helper.rb
|
114
|
+
- spec/test.rb
|
61
115
|
has_rdoc: true
|
62
116
|
homepage: http://github.com/visfleet/flex-sdk
|
63
117
|
licenses: []
|
@@ -91,7 +145,9 @@ rubyforge_project:
|
|
91
145
|
rubygems_version: 1.3.7
|
92
146
|
signing_key:
|
93
147
|
specification_version: 3
|
94
|
-
summary: Flex SDK Gem
|
148
|
+
summary: Flex SDK Gem and Thor Built utilities
|
95
149
|
test_files:
|
96
|
-
-
|
97
|
-
-
|
150
|
+
- spec/flex-sdk_spec.rb
|
151
|
+
- spec/opts-builder_spec.rb
|
152
|
+
- spec/spec_helper.rb
|
153
|
+
- spec/test.rb
|