Module: MetaRake::Builder::Rake
- Extended by:
- Magic
- Defined in:
- lib/metarake/builder/rake.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(*args) ⇒ Object
Create a sub-task for each of project targets.
-
#project_target?(target_name) ⇒ Boolean
Decide, whether a target listed by ‘rake -T` is a project target.
-
#targets ⇒ Array
Project target names, as returned by ‘rake -T` and filtered by #project_target?.
Methods included from Magic
Instance Method Details
#build ⇒ Object
69 70 71 72 73 74 |
# File 'lib/metarake/builder/rake.rb', line 69 def build Dir.chdir(self.to_s) do print "[#{self}/] " sh *(rake_command+targets) end end |
#initialize(*args) ⇒ Object
Create a sub-task for each of project targets.
25 26 27 28 29 30 31 32 33 |
# File 'lib/metarake/builder/rake.rb', line 25 def initialize(*args) super self.targets.each do |tgt| tgt_f = application.define_task(Rake::FileTask, File.join(self.to_s, tgt)) tgt_f.comment = "Build #{tgt} in #{self}" tgt_f.enhance([self]) end end |
#project_target?(target_name) ⇒ Boolean
Decide, whether a target listed by ‘rake -T` is a project target.
Default implementation decides based on target_filter, based on its type. When target_filter is a:
- nil
-
All targets returned by ‘rake -T` are project targets (default)
- Regex
-
Targets whose names match the regular expression are project targets
- String
-
Targets whose names include the string are project targets
- Proc
-
It is called with a target name as an argument; if it returns true, the target is a project target.
47 48 49 50 51 52 53 54 |
# File 'lib/metarake/builder/rake.rb', line 47 def project_target?(target_name) case self.class.target_filter when nil ; true when Regexp ; self.class.target_filter =~ target_name when Proc ; self.class.target_filter.call(target_name) when String ; target_name.include?(self.class.target_filter) end end |
#targets ⇒ Array
Returns Project target names, as returned by ‘rake -T` and filtered by #project_target?.
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/metarake/builder/rake.rb', line 58 def targets @targets ||= begin cmd = Mixlib::ShellOut.new(rake_command+['-T'], :cwd => self.to_s) cmd.run_command.error! cmd.stdout.lines. map { |ln| tgt=ln.split[1] ; tgt if self.project_target?(tgt) }. compact end end |