filament 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +96 -0
- data/README +2 -2
- data/lib/filament.rb +1 -1
- data/lib/filament/block_object.rb +11 -0
- data/lib/filament/os.rb +0 -3
- data/lib/filament/platform.rb +16 -0
- data/lib/filament/resolver.rb +2 -1
- data/lib/filament/target.rb +118 -10
- data/lib/filament/util/filelist2.rb +1 -1
- data/lib/filament/util/lazy_list.rb +9 -9
- data/plugins/00util/lib/filament/plugins/util.rb +18 -0
- data/plugins/01java/lib/filament/java/library.rb +88 -0
- data/plugins/{02javame/lib/filament/javame → 01java/lib/filament/java}/tasks/library_task.rb +86 -63
- data/plugins/01java/lib/filament/java/tools.rb +1 -0
- data/plugins/01java/lib/filament/java/tools/compile.rb +2 -2
- data/plugins/01java/lib/filament/java/tools/execute.rb +16 -9
- data/plugins/01java/lib/filament/java/tools/jar.rb +1 -1
- data/plugins/01java/lib/filament/java/tools/javadoc.rb +22 -0
- data/plugins/01java/lib/filament/java/tools/proguard.rb +1 -0
- data/plugins/{02javame → 01java}/lib/filament/javame/suite.rb +20 -22
- data/plugins/{02javame → 01java}/lib/filament/javame/tasks.rb +0 -1
- data/plugins/{02javame → 01java}/lib/filament/javame/tools.rb +0 -1
- data/plugins/{02javame → 01java}/lib/filament/javame/tools/descriptor.rb +19 -7
- data/plugins/{02javame → 01java}/lib/filament/javame/tools/emulator.rb +0 -1
- data/plugins/{02javame → 01java}/lib/filament/javame/tools/external/mpp_sdk.rb +0 -0
- data/plugins/{02javame → 01java}/lib/filament/javame/tools/external/wtk.rb +0 -0
- data/plugins/{02javame → 01java}/lib/filament/javame/tools/preverifier.rb +0 -2
- data/plugins/01java/lib/filament/javase/application.rb +43 -0
- data/plugins/01java/lib/filament/javase/tasks.rb +1 -0
- data/plugins/01java/lib/init.rb +16 -0
- data/plugins/04spin/lib/filament/spin/sji.rb +17 -19
- data/plugins/04spin/lib/filament/spin/tasks/sji_task.rb +11 -10
- data/plugins/04spin/lib/spin/sji.rb +371 -170
- data/plugins/05push/lib/filament/plugins/push.rb +6 -9
- data/plugins/05push/lib/filament/push.rb +1 -1
- data/plugins/05push/lib/filament/push/conduits/filter_conduit.rb +1 -1
- metadata +74 -64
- data/CHANGELOG +0 -81
- data/plugins/02javame/lib/filament/javame/library.rb +0 -79
- data/plugins/02javame/lib/filament/javame/tools/platform.rb +0 -50
- data/plugins/02javame/lib/init.rb +0 -14
data/CHANGES
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
0.4.0:
|
2
|
+
Filament:
|
3
|
+
* LazyList accepts multiple arguments, instead of requiring an array
|
4
|
+
* [FIXED] BUILDING message is now accurate
|
5
|
+
* Added task command to execute a rake task, after invoking the given targets
|
6
|
+
* Added on_define method to Target, its instances, and all subclasses
|
7
|
+
* Added tag.tag_name support for conditional definitions
|
8
|
+
* Added options hash to all targets
|
9
|
+
* Added src_dir function
|
10
|
+
* Moved all platform code to Filament, out of JavaME Plugin
|
11
|
+
* [FIXED] FileList2 bug with 'include' on Arrays
|
12
|
+
Spin Plugin:
|
13
|
+
* java_method accepts a trailing hash, for cleaner files
|
14
|
+
* java_member now implemented
|
15
|
+
* added java_class to complement spin_prototype
|
16
|
+
|
17
|
+
0.3.0:
|
18
|
+
Filament:
|
19
|
+
* Updated Target#output to optionally take a block as output value
|
20
|
+
* Renamed Scm => SCM
|
21
|
+
* Created CompoundSCM to manage many SCMs
|
22
|
+
* Moved Filament::Platform module to Filament::OS
|
23
|
+
* Created Platform class, to manage platforms * use Platform.import(<yaml>)
|
24
|
+
* Replaced Artifact with Target
|
25
|
+
* FileList2 now has a tag attribute, allowing to set the tag it uses to resolve targets
|
26
|
+
* Added dependence on mechanize gem
|
27
|
+
* [FIXED] create scms with realpath, not package
|
28
|
+
HTTP Plugin:
|
29
|
+
* Uses mechanize to crawl a page for links
|
30
|
+
* Added plugin to manage pulling stuff from the web
|
31
|
+
* Future support may include pushing stuff to the web (over webdav)
|
32
|
+
Spin Plugin:
|
33
|
+
* Added libs for generating sji (both java and spin) interfaces
|
34
|
+
* creates a target with :java and :spin source outputs
|
35
|
+
* outputs a jad_proc to add entries for interpreter startup
|
36
|
+
Java Plugin:
|
37
|
+
* Dropped use of JAVAC, JAR, etc. to just use java_bin('javac'), etc.
|
38
|
+
JavaME Plugin:
|
39
|
+
* Merged Library and Suite functionality into a single rake tasklib
|
40
|
+
* Simplified Library and Suite artifacts
|
41
|
+
|
42
|
+
0.2.3:
|
43
|
+
SVN Plugin:
|
44
|
+
* Fixed an svn include problem
|
45
|
+
* Fixed the svn commands to work with new package.scm
|
46
|
+
|
47
|
+
0.2.2:
|
48
|
+
Filament:
|
49
|
+
* Fixed handling for scm actions for packages without scm
|
50
|
+
|
51
|
+
0.2.1:
|
52
|
+
Filament:
|
53
|
+
* Added ability to create workspace, package
|
54
|
+
* Added ability to checkout (and create) a package
|
55
|
+
* Can now execute the filament command outside a workspace
|
56
|
+
* Moved svn parts to PackageScm
|
57
|
+
* Supports in place to work with other forms of version control
|
58
|
+
|
59
|
+
0.2.0:
|
60
|
+
Filament:
|
61
|
+
* removed old tests
|
62
|
+
* Using cmdparse gem; One action per command
|
63
|
+
* added dependency on memoize gem
|
64
|
+
* general cleanup
|
65
|
+
All Plugins:
|
66
|
+
* Plugins now extend Filament::Plugin where necessary
|
67
|
+
JavaME Plugin:
|
68
|
+
* Moved vendor-specific stuff to tasks.rb in //vendor/libraries/javame
|
69
|
+
SVN Plugin:
|
70
|
+
* Created svn plugin, should make it easier to support other version control schemes in the future
|
71
|
+
|
72
|
+
0.1.2:
|
73
|
+
JavaME Plugin:
|
74
|
+
* Changed the default for obfuscating JavaME::Suite targets to false.
|
75
|
+
|
76
|
+
0.1.1:
|
77
|
+
Filament:
|
78
|
+
* Packages can't be hidden directories now
|
79
|
+
* Doesn't force working_dir and output_dir creation
|
80
|
+
* Package descriptor is now /package.rb instead of rakefile.rb
|
81
|
+
* package.rb is now evaluated within the scope of the Package object.
|
82
|
+
* targets are now defined by target(name, class, &block)
|
83
|
+
* future cleanups code cleanups will benefit from the two above items.
|
84
|
+
All Plugins:
|
85
|
+
* Updated external path references (Wtk, MppSdk, Proguard classes) to only use ENV
|
86
|
+
* Added ENV support for WTK_HOME, MPP_SDK_HOME, PROGUARD_HOME
|
87
|
+
Java Plugin:
|
88
|
+
* Added support for Proguard obfuscation
|
89
|
+
* Targets can output a 1-argument-block tagged :proguard and configure the obfuscator for dependencies
|
90
|
+
JavaME Plugin:
|
91
|
+
* Suite now takes itself into account when traversing deps for :jad_config outputs
|
92
|
+
* Obfuscation is available if you set obfuscate to true -- will auto-detect in the future
|
93
|
+
|
94
|
+
0.1.0:
|
95
|
+
Filament:
|
96
|
+
* Initial Release
|
data/README
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
Combine dependency-resolution, lazy-binding and rake (a ruby-based make alternative) and you get filament. Filament workspaces are a simple, cross-platform approach to managing complex build needs.
|
2
2
|
|
3
3
|
I created it satisfy my needs as a mobile application developer.
|
4
4
|
|
5
|
-
I am currently managing
|
5
|
+
I am currently managing a number of inter-dependent libraries for a suite of JavaME platforms using only filament, its stock plugins, and minor dependencies.
|
6
6
|
|
7
7
|
This tool has been developed and tested on Ruby 1.8.4, Rake 0.7, Cygwin (XP sp2), OS X 10.4.5, and Gentoo Linux.
|
data/lib/filament.rb
CHANGED
@@ -92,7 +92,7 @@ module Filament
|
|
92
92
|
def initialize
|
93
93
|
@cmd = CmdParse::CommandParser.new(true)
|
94
94
|
@cmd.program_name = "filament"
|
95
|
-
@cmd.program_version = [0,
|
95
|
+
@cmd.program_version = [0, 4, 0]
|
96
96
|
@cmd.add_command(CmdParse::HelpCommand.new)
|
97
97
|
@cmd.add_command(CmdParse::VersionCommand.new)
|
98
98
|
@cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
data/lib/filament/os.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
module Filament::OS
|
2
|
-
TARGET_PLATFORMS = {}
|
3
|
-
|
4
2
|
def darwin?
|
5
3
|
return ! PLATFORM.index("darwin").nil?
|
6
4
|
end
|
@@ -38,7 +36,6 @@ module Filament::OS
|
|
38
36
|
def to_windows_path(path)
|
39
37
|
return nil if path.nil?
|
40
38
|
if path.index('cygdrive').nil?
|
41
|
-
puts "#{path}\n"
|
42
39
|
return path
|
43
40
|
end
|
44
41
|
|
data/lib/filament/platform.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
3
|
module Filament
|
4
|
+
TAGS = {}
|
5
|
+
|
4
6
|
class Platform
|
5
7
|
def self.property(*attrs)
|
6
8
|
attrs.each do |a|
|
@@ -69,6 +71,20 @@ module Filament
|
|
69
71
|
return @prototypes.collect {|p| Platform.find(:name => p)}
|
70
72
|
end
|
71
73
|
|
74
|
+
def classpath
|
75
|
+
base_classpath = @attributes[:classpath]
|
76
|
+
|
77
|
+
classpath = []
|
78
|
+
classpath += base_classpath unless base_classpath.nil?
|
79
|
+
|
80
|
+
tags.each do |tag|
|
81
|
+
tag_classpath = TAGS[tag]
|
82
|
+
classpath += tag_classpath unless tag_classpath.nil?
|
83
|
+
end
|
84
|
+
|
85
|
+
return classpath
|
86
|
+
end
|
87
|
+
|
72
88
|
private
|
73
89
|
def initialize(name, prototypes, attributes)
|
74
90
|
@name = name
|
data/lib/filament/resolver.rb
CHANGED
@@ -48,9 +48,10 @@ module Filament
|
|
48
48
|
@package_resolver = @package.package_resolver
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
51
|
+
def valid?(path)
|
52
52
|
return FULL_REGEX === path || TARGET_REGEX === path || PACKAGE_REGEX === path
|
53
53
|
end
|
54
|
+
alias :valid_uri? :valid?
|
54
55
|
|
55
56
|
def resolve(uri)
|
56
57
|
package_path = nil
|
data/lib/filament/target.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'filament/util/lazy_list'
|
2
|
+
require 'set'
|
2
3
|
|
3
4
|
module Filament
|
4
5
|
class TargetList < LazyList
|
@@ -8,8 +9,44 @@ module Filament
|
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
12
|
+
module SrcUtil
|
13
|
+
def files(h)
|
14
|
+
tags = h[:tags]
|
15
|
+
suffix = h[:suffix] || '.*'
|
16
|
+
dir = h[:dir] || "#{h[:base_dir]}/#{h[:sub_dir]}"
|
17
|
+
wildcard = h[:wildcard] || "**/*#{suffix}"
|
18
|
+
|
19
|
+
list = []
|
20
|
+
p = Pathname.new(dir)
|
21
|
+
if p.exist?
|
22
|
+
p.children.each do |child|
|
23
|
+
if tags.include?(child.basename.to_s.to_sym)
|
24
|
+
list += FileList[child + wildcard].to_a
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
return list
|
30
|
+
end
|
31
|
+
|
32
|
+
def src_files(h)
|
33
|
+
h[:base_dir] ||= 'src'
|
34
|
+
h[:tags] ||= platform.tags + [:all]
|
35
|
+
return files(h)
|
36
|
+
end
|
37
|
+
|
38
|
+
def res_files(h)
|
39
|
+
h[:sub_dir] ||= 'res'
|
40
|
+
return src_files(h)
|
41
|
+
end
|
42
|
+
|
43
|
+
def src_dir(dir)
|
44
|
+
return src_files(:dir => dir)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
11
48
|
class Target
|
12
|
-
attr_reader :name, :package, :weak_deps, :deps, :deployables
|
49
|
+
attr_reader :name, :package, :weak_deps, :deps, :deployables, :platform, :tag
|
13
50
|
|
14
51
|
def initialize(args, &block)
|
15
52
|
if args.is_a? Hash
|
@@ -30,28 +67,92 @@ module Filament
|
|
30
67
|
@invoked = false
|
31
68
|
@proc = Proc.new {}
|
32
69
|
@outputs = {}
|
33
|
-
@
|
34
|
-
|
70
|
+
@options = {}
|
71
|
+
@deployables = Set.new
|
72
|
+
@on_define_procs = []
|
73
|
+
@on_init_procs = []
|
74
|
+
|
75
|
+
@platform = Filament::Platform.find(:name => $target_platform)
|
76
|
+
@tag = Filament::BlockObject.new do |sym, a, p|
|
77
|
+
tags = @platform.tags
|
78
|
+
if tags.member?(sym)
|
79
|
+
p.call unless p.nil?
|
80
|
+
end
|
81
|
+
|
82
|
+
tags.member?(sym)
|
83
|
+
end
|
84
|
+
|
35
85
|
raise 'targets must have a name' if @name.nil?
|
36
86
|
raise 'targets must have a package' if @package.nil?
|
37
87
|
|
38
|
-
@package << self
|
39
|
-
|
88
|
+
@package << self
|
40
89
|
init
|
41
90
|
|
42
91
|
@proc = Proc.new do
|
43
92
|
instance_eval(&block)
|
44
|
-
|
93
|
+
on_init
|
94
|
+
on_define
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def assert_tag(*tags)
|
99
|
+
tags -= platform.tags
|
100
|
+
raise "target #{uri} requires platform tags: #{tags.join(', ')}" unless tags.empty?
|
101
|
+
end
|
102
|
+
|
103
|
+
def options(h=nil)
|
104
|
+
return @options if h.nil?
|
105
|
+
@options.merge!(h)
|
106
|
+
end
|
107
|
+
|
108
|
+
def on_define(&block)
|
109
|
+
unless block.nil?
|
110
|
+
@on_define_procs << block
|
111
|
+
else
|
112
|
+
@on_define_procs.each { |p| p.call(self) }
|
113
|
+
self.class.on_define(self)
|
45
114
|
end
|
46
115
|
end
|
47
116
|
|
48
|
-
def
|
117
|
+
def self.on_define(target=nil, &block)
|
118
|
+
@@on_define_procs ||= {}
|
119
|
+
@@on_define_procs[self] ||= []
|
120
|
+
|
121
|
+
unless block.nil?
|
122
|
+
raise "if a block is given, target cannot be specified" unless target.nil?
|
123
|
+
@@on_define_procs[self] << block
|
124
|
+
else
|
125
|
+
raise "if a block is not given, target cannot be nil" if target.nil?
|
126
|
+
superclass.on_define(target) if superclass.respond_to?(:on_define)
|
127
|
+
@@on_define_procs[self].each{ |p| p.call(target) }
|
128
|
+
end
|
129
|
+
end
|
49
130
|
|
50
|
-
def
|
131
|
+
def on_init(&block)
|
132
|
+
unless block.nil?
|
133
|
+
@on_init_procs << block
|
134
|
+
else
|
135
|
+
@on_init_procs.each { |p| p.call(self) }
|
136
|
+
self.class.on_init(self)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.on_init(target=nil, &block)
|
141
|
+
@@on_init_procs ||= {}
|
142
|
+
@@on_init_procs[self] ||= []
|
51
143
|
|
144
|
+
unless block.nil?
|
145
|
+
raise "if a block is given, target cannot be specified" unless target.nil?
|
146
|
+
@@on_init_procs[self] << block
|
147
|
+
else
|
148
|
+
raise "if a block is not given, target cannot be nil" if target.nil?
|
149
|
+
superclass.on_init(target) if superclass.respond_to?(:on_init)
|
150
|
+
@@on_init_procs[self].each{ |p| p.call(target) }
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
52
154
|
def working_dir(subdir=nil)
|
53
155
|
base = "#{$context[:working_dir]}/#{package.path}/#{name}"
|
54
|
-
|
55
156
|
return subdir.nil? ? base : "#{base}/#{subdir.to_s}"
|
56
157
|
end
|
57
158
|
|
@@ -85,6 +186,13 @@ module Filament
|
|
85
186
|
return fd
|
86
187
|
end
|
87
188
|
|
189
|
+
def collect_outputs(tag)
|
190
|
+
o = flattened_deps.collect{|dep| dep[tag]}
|
191
|
+
o << self[tag]
|
192
|
+
o.compact!
|
193
|
+
return o
|
194
|
+
end
|
195
|
+
|
88
196
|
# adds some :output to the given :tag
|
89
197
|
# if a block is given, assume that's the output
|
90
198
|
# if :deployable is true, also adds :output to deployables
|
@@ -139,9 +247,9 @@ module Filament
|
|
139
247
|
@weak_deps.each {|t| t.invoke}
|
140
248
|
@deps.each {|t| t.invoke}
|
141
249
|
|
142
|
-
puts ">>> BUILDING #{uri} (#{@package.pathname}, #{self})"
|
143
250
|
instance_eval(&@proc)
|
144
251
|
|
252
|
+
puts ">>> BUILDING #{uri} (#{@package.pathname}, #{self})"
|
145
253
|
@outputs.values.select{|h| h.key?(:tasks)}.collect{|h| h[:tasks]}.each do |tasks|
|
146
254
|
tasks.each do |t|
|
147
255
|
t.invoke
|
@@ -16,7 +16,7 @@ module Filament
|
|
16
16
|
files = []
|
17
17
|
entries.each do |entry|
|
18
18
|
if entry.respond_to? :to_ary
|
19
|
-
resolve_filament_uris(*entry.to_ary)
|
19
|
+
files += resolve_filament_uris(*entry.to_ary)
|
20
20
|
else
|
21
21
|
if @target_resolver.valid_uri?(entry)
|
22
22
|
target = @target_resolver.resolve(entry)
|
@@ -12,16 +12,16 @@ class LazyList
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def include(
|
16
|
-
|
17
|
-
entry_name.to_ary
|
18
|
-
include(
|
19
|
-
end
|
20
|
-
else
|
21
|
-
if entry_resolved?(entry_name)
|
22
|
-
@resolved << entry_name
|
15
|
+
def include(*entry_names)
|
16
|
+
entry_names.each do |entry_name|
|
17
|
+
if entry_name.respond_to?(:to_ary)
|
18
|
+
self.include(*entry_name.to_ary)
|
23
19
|
else
|
24
|
-
|
20
|
+
if entry_resolved?(entry_name)
|
21
|
+
@resolved << entry_name
|
22
|
+
else
|
23
|
+
@unresolved << entry_name
|
24
|
+
end
|
25
25
|
end
|
26
26
|
end
|
27
27
|
return self
|
@@ -1,9 +1,26 @@
|
|
1
|
+
require 'rake'
|
1
2
|
require 'cmdparse'
|
2
3
|
require 'filament/plugin'
|
3
4
|
|
4
5
|
module Filament::Plugins
|
5
6
|
class Util < Filament::Plugin
|
6
7
|
def initialize(app)
|
8
|
+
app.subcommand('task', "Executes the given task") do |args|
|
9
|
+
resolver = $context[:target_resolver]
|
10
|
+
targets, tasks = args.partition { |arg| resolver.valid?(arg) }
|
11
|
+
|
12
|
+
targets = Filament::TargetList.new(targets)
|
13
|
+
|
14
|
+
targets.each do |target|
|
15
|
+
target.build do
|
16
|
+
target.invoke
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
tasks.collect! { |task| Rake::Task[task] }
|
21
|
+
tasks.each { |task| task.invoke }
|
22
|
+
end
|
23
|
+
|
7
24
|
app.subcommand('build', "Build the given targets") do |args|
|
8
25
|
targets = Filament::TargetList.new(*args)
|
9
26
|
targets.each { |target| target.build }
|
@@ -24,6 +41,7 @@ module Filament::Plugins
|
|
24
41
|
end
|
25
42
|
end
|
26
43
|
|
44
|
+
|
27
45
|
app.subcommand('targets', "Shows targets of given package") do |args|
|
28
46
|
packages = Filament::PackageList.new(*args)
|
29
47
|
packages.each do |package|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'filament/block_object'
|
2
|
+
require 'filament/java/mixins/classpath'
|
3
|
+
require 'filament/java/tasks/library_task'
|
4
|
+
|
5
|
+
module Filament::Java
|
6
|
+
class Library < Filament::Target
|
7
|
+
include Filament::Java::Mixins::Classpath
|
8
|
+
include Filament::SrcUtil
|
9
|
+
|
10
|
+
attr_accessor2 :obfuscate, :jvm_source_version, :jvm_target_version
|
11
|
+
|
12
|
+
attr_writer :should_package_deps
|
13
|
+
attr_reader :srcs, :resources
|
14
|
+
|
15
|
+
def custom_entries(h)
|
16
|
+
@custom_entries.merge!(h)
|
17
|
+
end
|
18
|
+
|
19
|
+
def append_entries(h)
|
20
|
+
h.keys.each do |key|
|
21
|
+
@append_entries[key] ||= []
|
22
|
+
entry = h[key]
|
23
|
+
if entry.is_a?(Array)
|
24
|
+
@append_entries[key] += entry
|
25
|
+
else
|
26
|
+
@append_entries[key] << entry
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def init
|
32
|
+
@append_entries = {}
|
33
|
+
@custom_entries = {}
|
34
|
+
|
35
|
+
@srcs = Filament::FileList2.new
|
36
|
+
@srcs.tag = :java
|
37
|
+
|
38
|
+
@resources = Filament::FileList2.new
|
39
|
+
@should_package_deps = false
|
40
|
+
|
41
|
+
@bootclasspath = @platform.classpath || []
|
42
|
+
@custom_classpath = []
|
43
|
+
|
44
|
+
if tag.javame
|
45
|
+
@jvm_source_version = 1.2
|
46
|
+
@jvm_target_version = 1.2
|
47
|
+
@cldc_version = platform.javame_configuration_version
|
48
|
+
raise "cldc_version not defined for platform: #{platform.name}" if @cldc_version.nil?
|
49
|
+
end
|
50
|
+
|
51
|
+
on_define do
|
52
|
+
@library = Filament::Java::Tasks::LibraryTask.new do |l|
|
53
|
+
define_library(l)
|
54
|
+
end
|
55
|
+
|
56
|
+
task :build => @library.tasks
|
57
|
+
|
58
|
+
output :tag => [:default, :jar],
|
59
|
+
:output => @library.jar_path,
|
60
|
+
:deployable => true,
|
61
|
+
:tasks => @library.tasks
|
62
|
+
|
63
|
+
output :tag => :append_entries,
|
64
|
+
:output => @append_entries
|
65
|
+
output :tag => :custom_entries,
|
66
|
+
:output => @custom_entries
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def define_library(l)
|
71
|
+
l.working_dir = working_dir
|
72
|
+
l.output_dir = output_dir
|
73
|
+
l.name = name
|
74
|
+
l.classpath = classpath
|
75
|
+
l.should_preverify = tag.javame
|
76
|
+
l.jvm_source_version = @jvm_source_version
|
77
|
+
l.jvm_target_version = @jvm_target_version
|
78
|
+
l.cldc_version = @cldc_version
|
79
|
+
l.bootclasspath = @bootclasspath
|
80
|
+
l.srcs = @srcs + @deps.collect{ |d| d[:java] }.compact.flatten
|
81
|
+
l.resources = @resources + res_files(:wildcard => '*') + (@should_package_deps ? flattened_deps_jars : [])
|
82
|
+
l.task_deps << package.descriptor
|
83
|
+
l.proguard_proc = Proc.new do |o|
|
84
|
+
flattened_deps.collect{ |dep| dep[:proguard_proc] }.compact.each{|p| p.call(o)}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|