Module: RJack::TarPit::SpecHelper
- Defined in:
- lib/rjack-tarpit/spec.rb
Overview
Helper mixin for Gem::Specification, adding Manifest awareness, maven strategy, jars and other generated_files declarations, as well as several convenience methods and defaults. Many of these were Hoe inspired or remain compatible with Hoe.spec
Instance Attribute Summary collapse
-
#assembly_name ⇒ Object
The name of the assembly (default: name).
-
#assembly_version ⇒ Object
The version of the assembly, which might be static, i.e.
-
#generated_files ⇒ Object
Any additional generated files to be included.
-
#history_file ⇒ Object
The filename for the project History (default: History.rdoc or History.txt if present).
-
#jar_dest ⇒ Object
Destination path for any jar links (default: lib/<name>).
-
#jars ⇒ Object
Return set or defaulted jar file names (without path).
-
#maven_strategy ⇒ Object
- Strategy for interacting with maven (default: nil, none ) :jars_from_assembly
-
jars will be found in assembly rather then set in Rakefile.
-
#readme_file ⇒ Object
The filename for the project README (default: README.rdoc or README.txt if present).
-
#version_file ⇒ Object
The canonical file containing the version number, where changes should trigger Manifest.txt (re-)generation.
Instance Method Summary collapse
-
#add_developer(author, email = nil) ⇒ Object
Add developer with optional email.
- #check_generate_manifest ⇒ Object
-
#depend(name, *args) ⇒ Object
Add a dependencies by name, version requirements, and a final optional :dev or :development symbol indicating its for development.
-
#description=(val) ⇒ Object
Set description.
-
#generate_manifest ⇒ Object
Generate Manifest.txt.
-
#jar_from ⇒ Object
The target/assembly path from which jars are linked.
-
#platform=(val) ⇒ Object
Override Gem::Specification to support simple platform symbol/string, i.e.
-
#remove_dest_jars ⇒ Object
Remove jars in jar_dest by wildcard expression.
-
#summary=(val) ⇒ Object
Set summary.
-
#tarpit_specify {|_self| ... } ⇒ Object
Set defaults, yields self to block, and finalizes.
Instance Attribute Details
#assembly_name ⇒ Object
The name of the assembly (default: name)
111 112 113 |
# File 'lib/rjack-tarpit/spec.rb', line 111 def assembly_name @assembly_name end |
#assembly_version ⇒ Object
The version of the assembly, which might be static, i.e. “1.0”, if the pom is not shared (dependency jars only) (default: version)
116 117 118 |
# File 'lib/rjack-tarpit/spec.rb', line 116 def assembly_version @assembly_version end |
#generated_files ⇒ Object
Any additional generated files to be included. (default: nil)
100 101 102 |
# File 'lib/rjack-tarpit/spec.rb', line 100 def generated_files @generated_files end |
#history_file ⇒ Object
The filename for the project History (default: History.rdoc or History.txt if present)
87 88 89 |
# File 'lib/rjack-tarpit/spec.rb', line 87 def history_file @history_file end |
#jar_dest ⇒ Object
Destination path for any jar links (default: lib/<name>)
96 97 98 |
# File 'lib/rjack-tarpit/spec.rb', line 96 def jar_dest @jar_dest end |
#jars ⇒ Object
Return set or defaulted jar file names (without path)
222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/rjack-tarpit/spec.rb', line 222 def jars if @jars.nil? && ( maven_strategy == :jars_from_assembly ) # Extract jar files from saved Manifest state, since neither # from or dest jars may be available at call time. @jars = Util::read_file_list( 'Manifest.txt' ). select { |f| f =~ /\.jar$/ }. map { |f| File.basename( f ) } #FIXME: Test Manifest.txt exists yet? end @jars ||= Array( @jars ) end |
#maven_strategy ⇒ Object
Strategy for interacting with maven (default: nil, none )
- :jars_from_assembly
-
jars will be found in assembly rather then set in Rakefile.
- :no_assembly
-
One jar created from source, jars=, no assembly setup in maven.
108 109 110 |
# File 'lib/rjack-tarpit/spec.rb', line 108 def maven_strategy @maven_strategy end |
#readme_file ⇒ Object
The filename for the project README (default: README.rdoc or README.txt if present)
83 84 85 |
# File 'lib/rjack-tarpit/spec.rb', line 83 def readme_file @readme_file end |
#version_file ⇒ Object
The canonical file containing the version number, where changes should trigger Manifest.txt (re-)generation. (default: lib/<name>/base.rb or lib/<name>/version.rb if present)
121 122 123 |
# File 'lib/rjack-tarpit/spec.rb', line 121 def version_file @version_file end |
Instance Method Details
#add_developer(author, email = nil) ⇒ Object
Add developer with optional email.
185 186 187 188 |
# File 'lib/rjack-tarpit/spec.rb', line 185 def add_developer( , email = nil ) ( self. ||= [] ) << ( self.email ||= [] ) << email if email end |
#check_generate_manifest ⇒ Object
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/rjack-tarpit/spec.rb', line 237 def check_generate_manifest # FIXME: How about diffent aproach: Always build new manifest # list, compare, and report and write if change from read in # list? unless ManifestTracker.generated?( name ) if File.exist?( 'Manifest.static' ) mtime = [ 'Manifest.static', version_file ]. compact. map { |f| File.stat( f ).mtime }. max if ( !File.exist?( 'Manifest.txt' ) || mtime > File.stat( 'Manifest.txt' ).mtime ) generate_manifest self.files = Util::read_file_list( 'Manifest.txt' ) end end end end |
#depend(name, *args) ⇒ Object
Add a dependencies by name, version requirements, and a final optional :dev or :development symbol indicating its for development.
193 194 195 196 197 198 199 200 |
# File 'lib/rjack-tarpit/spec.rb', line 193 def depend( name, *args ) if args.last == :dev || args.last == :development args.pop add_development_dependency( name, *args ) else add_dependency( name, *args ) end end |
#description=(val) ⇒ Object
Set description. This override cleans up whitespace.
208 209 210 |
# File 'lib/rjack-tarpit/spec.rb', line 208 def description=( val ) super( val.gsub( /\s+/, ' ' ).strip ) end |
#generate_manifest ⇒ Object
Generate Manifest.txt
259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/rjack-tarpit/spec.rb', line 259 def generate_manifest ManifestTracker.once( name ) do remove_dest_jars m = [] if File.exist?( 'Manifest.static' ) m += Util::read_file_list( 'Manifest.static' ) end m += Util::clean_list( generated_files ).sort m += dest_jars puts "TARPIT: Regenerating #{ File.( 'Manifest.txt' ) }" open( 'Manifest.txt', 'w' ) { |out| out.puts m } end end |
#jar_from ⇒ Object
The target/assembly path from which jars are linked
282 283 284 285 286 287 288 289 290 291 292 |
# File 'lib/rjack-tarpit/spec.rb', line 282 def jar_from dirs = [ 'target' ] unless maven_strategy == :no_assembly dirs << [ assembly_name, assembly_version, 'bin.dir' ].join( '-' ) end File.join( dirs ) end |
#platform=(val) ⇒ Object
Override Gem::Specification to support simple platform symbol/string, i.e. :java
214 215 216 217 218 219 |
# File 'lib/rjack-tarpit/spec.rb', line 214 def platform=( val ) if val.is_a?( Symbol ) || val.is_a?( String ) val = Gem::Platform.new( val.to_s ) end super( val ) end |
#remove_dest_jars ⇒ Object
Remove jars in jar_dest by wildcard expression
276 277 278 279 |
# File 'lib/rjack-tarpit/spec.rb', line 276 def remove_dest_jars jars = Dir[ File.join( jar_dest, "*.jar" ) ].sort FileUtils::rm_f jars unless jars.empty? end |
#summary=(val) ⇒ Object
Set summary. This override cleans up whitespace.
203 204 205 |
# File 'lib/rjack-tarpit/spec.rb', line 203 def summary=( val ) super( val.gsub( /\s+/, ' ' ).strip ) end |
#tarpit_specify {|_self| ... } ⇒ Object
Set defaults, yields self to block, and finalizes
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/rjack-tarpit/spec.rb', line 124 def tarpit_specify # Better defaults if File.exist?( 'Manifest.txt' ) self.files = Util::read_file_list( 'Manifest.txt' ) end self.executables = self.files.grep( /^bin\/.+/ ) { |f| File.basename( f ) } @readme_file = existing( %w[ README.rdoc README.txt ] ) @history_file = existing( %w[ History.rdoc History.txt ] ) self.extra_rdoc_files += [ Dir[ '*.rdoc' ], @readme_file, @history_file ].flatten.compact.sort.uniq self. += [ '--main', @readme_file ] if @readme_file @jars = nil @jar_dest = nil @generated_files = nil @maven_strategy = nil parse_readme( @readme_file ) if @readme_file yield self if block_given? @assembly_name ||= name @assembly_version ||= version version_candidates = %w[ base version ].map do |f| File.join( 'lib', name, "#{f}.rb" ) end @version_file ||= existing( version_candidates ) @jar_dest ||= File.join( 'lib', name ) @jars = Array( @jars ).compact @jars = nil if @jars.empty? if ( @jars.nil? && ( ( @maven_strategy == :no_assembly ) || ( @maven_strategy.nil? && File.exist?( 'pom.xml' ) ) ) ) @jars = [ default_jar ] end # The platform must be java if jars are specified. self.platform = :java if !jars.empty? # Add tarpit as dev dependency unless already present unless ( name == 'rjack-tarpit' || dependencies.find { |d| d.name == 'rjack-tarpit' } ) depend( 'rjack-tarpit', "~> #{ RJack::TarPit::MINOR_VERSION }", :dev ) end check_generate_manifest end |