Class: RJack::TarPit::BaseStrategy
- Inherits:
-
Object
- Object
- RJack::TarPit::BaseStrategy
- Includes:
- CleanTaskDefiner, DocTaskDefiner, GemTaskDefiner, GitTaskDefiner, LineMatchTaskDefiner, TestTaskDefiner, Util, Rake::DSL
- Defined in:
- lib/rjack-tarpit/base_strategy.rb
Overview
Base class for Rake task generation.
Constant Summary collapse
- MVN_STATE_FILE =
File touched to record the time of last successful ‘mvn package’ run.
'target/.tarpit'
- MVN_STATE_FILE_INSTALL =
'target/.tarpit-install'
Instance Attribute Summary collapse
-
#spec ⇒ Object
readonly
The augmented Gem::Specification as constructed.
Attributes included from DocTaskDefiner
#publish_rdoc_rsync_flags, #rdoc_destinations, #rdoc_dir
Attributes included from LineMatchTaskDefiner
#history_date_regexp, #history_regexp, #history_version_regexp, #init_files, #init_line_regexp, #init_version_regexp
Attributes included from CleanTaskDefiner
Attributes included from GemTaskDefiner
Attributes included from TestTaskDefiner
#rspec_task_config, #test_loader, #test_task_config
Instance Method Summary collapse
- #add_define_hook(sym) ⇒ Object
-
#define_manifest_task ⇒ Object
Define task for dynamically generating Manifest.txt.
-
#define_maven_package_task ⇒ Object
Define a file task tracking calls to “mvn package”.
-
#define_maven_tasks ⇒ Object
Define maven tasks based on spec strategy and other details.
-
#define_post_maven_tasks ⇒ Object
Define file tasks for all jar symlinks and other misc.
-
#define_tasks ⇒ Object
Define rake tasks (given settings).
-
#initialize(spec) ⇒ BaseStrategy
constructor
See TarPit.new.
-
#maven_dependencies ⇒ Object
Dependencies on “mvn package” including pom.xml, any assembly.xml, all files under the “src” directory.
-
#run_maven ⇒ Object
Run Maven mvn package or install and touch state files.
Methods included from Util
Methods included from GitTaskDefiner
Methods included from DocTaskDefiner
Methods included from LineMatchTaskDefiner
#define_line_match_tasks, #test_line_match
Methods included from CleanTaskDefiner
Methods included from GemTaskDefiner
#define_gem_tasks, #gem_config, #gem_file, #gem_install_dep
Methods included from TestTaskDefiner
#define_spec_tasks, #define_test_tasks
Constructor Details
#initialize(spec) ⇒ BaseStrategy
See TarPit.new
49 50 51 52 53 54 55 56 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 49 def initialize( spec ) @defines = [ :define_maven_tasks ] super() @spec = spec @install_request = Rake.application.top_level_tasks.include?( "install" ) end |
Instance Attribute Details
#spec ⇒ Object (readonly)
The augmented Gem::Specification as constructed.
46 47 48 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 46 def spec @spec end |
Instance Method Details
#add_define_hook(sym) ⇒ Object
58 59 60 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 58 def add_define_hook( sym ) @defines << sym end |
#define_manifest_task ⇒ Object
Define task for dynamically generating Manifest.txt
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 83 def define_manifest_task if File.exist?( 'Manifest.static' ) file 'Manifest.txt' => [ 'Manifest.static' ] end gf = clean_list( spec.generated_files ).sort [ :gem, :test ].each { |t| task t => gf } unless gf.empty? task :gen_clean do rm_f gf end task :clean => :gen_clean end desc "Force update of Manifest.txt" task :manifest do spec.generate_manifest end mtask = file 'Manifest.txt' do spec.generate_manifest end mtask end |
#define_maven_package_task ⇒ Object
Define a file task tracking calls to “mvn package”
117 118 119 120 121 122 123 124 125 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 117 def define_maven_package_task [ MVN_STATE_FILE, MVN_STATE_FILE_INSTALL ].each do |sf| file sf => maven_dependencies do run_maven end end task :install => MVN_STATE_FILE_INSTALL end |
#define_maven_tasks ⇒ Object
Define maven tasks based on spec strategy and other details.
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 68 def define_maven_tasks from_assembly = ( spec.maven_strategy == :jars_from_assembly ) do_maven = from_assembly || spec.jars.size > 0 define_maven_package_task if do_maven if do_maven || spec.generated_files define_manifest_task task( :manifest => [ MVN_STATE_FILE ] ) if from_assembly end define_post_maven_tasks if do_maven end |
#define_post_maven_tasks ⇒ Object
Define file tasks for all jar symlinks and other misc. maven associated tasks like :mvn_clean.
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 145 def define_post_maven_tasks jfrom = spec.jar_from spec.jars.each do |jar| from = File.join( jfrom, jar ) dest = File.join( spec.jar_dest, jar ) file from => [ MVN_STATE_FILE ] file dest => [ from ] do ln( from, dest, :force => true ) end [ :gem, :test ].each { |t| task t => [ dest ] } end task :mvn_clean do spec.remove_dest_jars rm_rf 'target' if File.directory?( 'target' ) end task :clean => :mvn_clean end |
#define_tasks ⇒ Object
Define rake tasks (given settings)
63 64 65 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 63 def define_tasks @defines.each { |sym| send( sym ) } end |
#maven_dependencies ⇒ Object
Dependencies on “mvn package” including pom.xml, any assembly.xml, all files under the “src” directory.
166 167 168 169 170 171 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 166 def maven_dependencies deps = [ 'pom.xml' ] deps << 'assembly.xml' if File.exist?( 'assembly.xml' ) deps += FileList[ "src/**/*" ].exclude { |f| ! File.file?( f ) } deps end |
#run_maven ⇒ Object
Run Maven mvn package or install and touch state files.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/rjack-tarpit/base_strategy.rb', line 128 def run_maven # Delay till now, in case we were not running on jvm require 'rjack-maven' target = @install_request ? 'install' : 'package' status = RJack::Maven.launch( [ target ] ) unless status == 0 raise "TARPIT: Maven #{target} failed (exit code: #{status})" end touch( MVN_STATE_FILE ) touch( MVN_STATE_FILE_INSTALL ) if @install_request end |