rjack-tarpit 2.0.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.rdoc +71 -0
- data/Manifest.txt +45 -0
- data/NOTICE.txt +2 -0
- data/README.rdoc +124 -0
- data/Rakefile +21 -0
- data/lib/rjack-tarpit.rb +40 -0
- data/lib/rjack-tarpit/base.rb +22 -0
- data/lib/rjack-tarpit/base_strategy.rb +175 -0
- data/lib/rjack-tarpit/clean.rb +43 -0
- data/lib/rjack-tarpit/doc.rb +67 -0
- data/lib/rjack-tarpit/gem.rb +119 -0
- data/lib/rjack-tarpit/git.rb +45 -0
- data/lib/rjack-tarpit/line_match.rb +134 -0
- data/lib/rjack-tarpit/readme_parser.rb +74 -0
- data/lib/rjack-tarpit/spec.rb +314 -0
- data/lib/rjack-tarpit/test.rb +110 -0
- data/lib/rjack-tarpit/util.rb +37 -0
- data/test/jproject/History.rdoc +2 -0
- data/test/jproject/Manifest.static +10 -0
- data/test/jproject/Manifest.txt +11 -0
- data/test/jproject/NOTICE.txt +2 -0
- data/test/jproject/README.rdoc +24 -0
- data/test/jproject/Rakefile +7 -0
- data/test/jproject/jproject.gemspec +15 -0
- data/test/jproject/lib/jproject.rb +11 -0
- data/test/jproject/lib/jproject/base.rb +3 -0
- data/test/jproject/pom.xml +75 -0
- data/test/jproject/test/setup.rb +7 -0
- data/test/jproject/test/test_jproject.rb +14 -0
- data/test/setup.rb +7 -0
- data/test/test_projects.rb +71 -0
- data/test/test_readme_parser.rb +97 -0
- data/test/test_tarpit.rb +33 -0
- data/test/zookeeper/History.rdoc +2 -0
- data/test/zookeeper/Manifest.static +10 -0
- data/test/zookeeper/Manifest.txt +13 -0
- data/test/zookeeper/README.rdoc +23 -0
- data/test/zookeeper/Rakefile +7 -0
- data/test/zookeeper/assembly.xml +15 -0
- data/test/zookeeper/lib/rjack-zookeeper.rb +29 -0
- data/test/zookeeper/lib/rjack-zookeeper/base.rb +23 -0
- data/test/zookeeper/pom.xml +73 -0
- data/test/zookeeper/rjack-zookeeper.gemspec +18 -0
- data/test/zookeeper/test/setup.rb +17 -0
- data/test/zookeeper/test/test_zookeeper.rb +14 -0
- metadata +186 -0
@@ -0,0 +1,314 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'rjack-tarpit/base'
|
18
|
+
require 'rjack-tarpit/util'
|
19
|
+
require 'rjack-tarpit/readme_parser'
|
20
|
+
|
21
|
+
require 'fileutils'
|
22
|
+
|
23
|
+
module RJack::TarPit
|
24
|
+
|
25
|
+
class << self
|
26
|
+
|
27
|
+
# The result of the last call to specify.
|
28
|
+
attr_reader :last_spec
|
29
|
+
|
30
|
+
# Produce a Gem::Specification embellished with SpecHelper,
|
31
|
+
# ReadmeParser, and yield to block.
|
32
|
+
# The specification name defaults to <name>.gemspec calling this.
|
33
|
+
# Within block, $LOAD_PATH will have the projects lib included.
|
34
|
+
def specify( &block )
|
35
|
+
|
36
|
+
# Embellish a Specification instance with SpecHelper.
|
37
|
+
#
|
38
|
+
# This way spec.to_yaml continues to be a Gem::Specification
|
39
|
+
# object. Deriving our own Specification subclass would cause
|
40
|
+
# problems with to_yaml.
|
41
|
+
spec = Gem::Specification.new
|
42
|
+
class << spec
|
43
|
+
include SpecHelper
|
44
|
+
include ReadmeParser
|
45
|
+
end
|
46
|
+
|
47
|
+
specfile = caller[0] =~ /^(.*\.gemspec)/ && $1
|
48
|
+
|
49
|
+
# Default name to the (name).gemspec that should be calling us
|
50
|
+
spec.name = File.basename( specfile, ".gemspec" )
|
51
|
+
|
52
|
+
# Add project's lib/ to LOAD_PATH for block...
|
53
|
+
$LOAD_PATH.unshift( File.join( File.dirname( specfile ), 'lib' ) )
|
54
|
+
|
55
|
+
spec.tarpit_specify &block
|
56
|
+
|
57
|
+
$LOAD_PATH.shift # ...then remove it to avoid pollution
|
58
|
+
|
59
|
+
@last_spec = spec
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Helper mixin for Gem::Specification, adding Manifest awareness,
|
64
|
+
# maven strategy, jars and other generated_files declarations, as
|
65
|
+
# well as several convenience methods and defaults. Many of these were
|
66
|
+
# Hoe inspired or remain compatible with Hoe.spec
|
67
|
+
module SpecHelper
|
68
|
+
|
69
|
+
# The filename for the project README
|
70
|
+
# (default: README.rdoc or README.txt if present)
|
71
|
+
attr_accessor :readme_file
|
72
|
+
|
73
|
+
# The filename for the project History
|
74
|
+
# (default: History.rdoc or History.txt if present)
|
75
|
+
attr_accessor :history_file
|
76
|
+
|
77
|
+
# The set of jar file names (without path) to include. May be
|
78
|
+
# auto-computed for :no_assembly (default_jar) or
|
79
|
+
# :jars_from_assembly (from Manifest.txt) maven_strategy.
|
80
|
+
attr_writer :jars
|
81
|
+
|
82
|
+
# Destination path for any jar links
|
83
|
+
# (default: lib/<name>)
|
84
|
+
attr_accessor :jar_dest
|
85
|
+
|
86
|
+
# Any additional generated files to be included.
|
87
|
+
# (default: nil)
|
88
|
+
attr_accessor :generated_files
|
89
|
+
|
90
|
+
# Strategy for interacting with maven
|
91
|
+
# (default: nil, none )
|
92
|
+
# :jars_from_assembly:: jars will be found in assembly rather then
|
93
|
+
# set in Rakefile.
|
94
|
+
# :no_assembly:: One jar created from source, jars=[default_jar],
|
95
|
+
# no assembly setup in maven.
|
96
|
+
attr_accessor :maven_strategy
|
97
|
+
|
98
|
+
# The name of the assembly (default: name)
|
99
|
+
attr_accessor :assembly_name
|
100
|
+
|
101
|
+
# The version of the assembly, which might be static, i.e. "1.0",
|
102
|
+
# if the pom is not shared (dependency jars only)
|
103
|
+
# (default: version)
|
104
|
+
attr_accessor :assembly_version
|
105
|
+
|
106
|
+
# The canonical file containing the version number, where changes
|
107
|
+
# should trigger Manifest.txt (re-)generation.
|
108
|
+
# (default: lib/<name>/base.rb or lib/<name>/version.rb if present)
|
109
|
+
attr_accessor :version_file
|
110
|
+
|
111
|
+
# Set defaults, yields self to block, and finalizes
|
112
|
+
def tarpit_specify
|
113
|
+
|
114
|
+
# Better defaults
|
115
|
+
if File.exist?( 'Manifest.txt' )
|
116
|
+
self.files = Util::read_file_list( 'Manifest.txt' )
|
117
|
+
end
|
118
|
+
|
119
|
+
self.executables =
|
120
|
+
self.files.grep( /^bin\/.+/ ) { |f| File.basename( f ) }
|
121
|
+
|
122
|
+
@readme_file = existing( %w[ README.rdoc README.txt ] )
|
123
|
+
@history_file = existing( %w[ History.rdoc History.txt ] )
|
124
|
+
|
125
|
+
self.extra_rdoc_files += [ Dir[ '*.rdoc' ],
|
126
|
+
@readme_file,
|
127
|
+
@history_file ].flatten.compact.sort.uniq
|
128
|
+
|
129
|
+
self.rdoc_options += [ '--main', @readme_file ] if @readme_file
|
130
|
+
|
131
|
+
@jars = nil
|
132
|
+
@jar_dest = nil
|
133
|
+
@generated_files = nil
|
134
|
+
@maven_strategy = nil
|
135
|
+
|
136
|
+
parse_readme( @readme_file ) if @readme_file
|
137
|
+
|
138
|
+
yield self if block_given?
|
139
|
+
|
140
|
+
@assembly_name ||= name
|
141
|
+
@assembly_version ||= version
|
142
|
+
|
143
|
+
version_candidates = %w[ base version ].map do |f|
|
144
|
+
File.join( 'lib', name, "#{f}.rb" )
|
145
|
+
end
|
146
|
+
@version_file ||= existing( version_candidates )
|
147
|
+
|
148
|
+
@jar_dest ||= File.join( 'lib', name )
|
149
|
+
|
150
|
+
@jars = Array( @jars ).compact
|
151
|
+
@jars = nil if @jars.empty?
|
152
|
+
|
153
|
+
if ( @jars.nil? &&
|
154
|
+
( ( @maven_strategy == :no_assembly ) ||
|
155
|
+
( @maven_strategy.nil? && File.exist?( 'pom.xml' ) ) ) )
|
156
|
+
@jars = [ default_jar ]
|
157
|
+
end
|
158
|
+
|
159
|
+
# The platform must be java if jars are specified.
|
160
|
+
self.platform = :java if !jars.empty?
|
161
|
+
|
162
|
+
# Add tarpit as dev dependency unless already present
|
163
|
+
unless ( name == 'rjack-tarpit' ||
|
164
|
+
dependencies.find { |d| d.name == 'rjack-tarpit' } )
|
165
|
+
depend( 'rjack-tarpit', "~> #{ RJack::TarPit::MINOR_VERSION }", :dev )
|
166
|
+
end
|
167
|
+
|
168
|
+
check_generate_manifest
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
# Add developer with optional email.
|
173
|
+
def add_developer( author, email = nil )
|
174
|
+
( self.authors ||= [] ) << author
|
175
|
+
( self.email ||= [] ) << email if email
|
176
|
+
end
|
177
|
+
|
178
|
+
# Add a dependencies by name, version requirements, and a final
|
179
|
+
# optional :dev or :development symbol indicating its for
|
180
|
+
# development.
|
181
|
+
def depend( name, *args )
|
182
|
+
if args.last == :dev || args.last == :development
|
183
|
+
args.pop
|
184
|
+
add_development_dependency( name, *args )
|
185
|
+
else
|
186
|
+
add_dependency( name, *args )
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
# Set summary. This override cleans up whitespace.
|
191
|
+
def summary=( val )
|
192
|
+
super( val.gsub( /\s+/, ' ' ).strip )
|
193
|
+
end
|
194
|
+
|
195
|
+
# Set summary. This override cleans up whitespace.
|
196
|
+
def description=( val )
|
197
|
+
super( val.gsub( /\s+/, ' ' ).strip )
|
198
|
+
end
|
199
|
+
|
200
|
+
# Override Gem::Specification to support simple platform
|
201
|
+
# symbol/string, i.e. :java
|
202
|
+
def platform=( val )
|
203
|
+
if val.is_a?( Symbol ) || val.is_a?( String )
|
204
|
+
val = Gem::Platform.new( val.to_s )
|
205
|
+
end
|
206
|
+
super( val )
|
207
|
+
end
|
208
|
+
|
209
|
+
# Return set or defaulted jar file names (without path)
|
210
|
+
def jars
|
211
|
+
if @jars.nil? && ( maven_strategy == :jars_from_assembly )
|
212
|
+
|
213
|
+
# Extract jar files from saved Manifest state, since neither
|
214
|
+
# from or dest jars may be available at call time.
|
215
|
+
@jars =
|
216
|
+
Util::read_file_list( 'Manifest.txt' ).
|
217
|
+
select { |f| f =~ /\.jar$/ }.
|
218
|
+
map { |f| File.basename( f ) }
|
219
|
+
|
220
|
+
#FIXME: Test Manifest.txt exists yet?
|
221
|
+
end
|
222
|
+
@jars ||= Array( @jars )
|
223
|
+
end
|
224
|
+
|
225
|
+
def check_generate_manifest
|
226
|
+
# FIXME: How about diffent aproach: Always build new manifest
|
227
|
+
# list, compare, and report and write if change from read in
|
228
|
+
# list?
|
229
|
+
|
230
|
+
unless @generated_manifest
|
231
|
+
if File.exist?( 'Manifest.static' )
|
232
|
+
mtime = [ 'Manifest.static', version_file ].
|
233
|
+
compact.
|
234
|
+
map { |f| File.stat( f ).mtime }.
|
235
|
+
max
|
236
|
+
|
237
|
+
if ( !File.exist?( 'Manifest.txt' ) ||
|
238
|
+
mtime > File.stat( 'Manifest.txt' ).mtime )
|
239
|
+
generate_manifest
|
240
|
+
self.files = Util::read_file_list( 'Manifest.txt' )
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
# Generate Manifest.txt
|
247
|
+
def generate_manifest
|
248
|
+
unless @generated_manifest #only once
|
249
|
+
remove_dest_jars
|
250
|
+
|
251
|
+
m = []
|
252
|
+
if File.exist?( 'Manifest.static' )
|
253
|
+
m += Util::read_file_list( 'Manifest.static' )
|
254
|
+
end
|
255
|
+
m += Util::clean_list( generated_files ).sort
|
256
|
+
m += dest_jars
|
257
|
+
|
258
|
+
puts "TARPIT: Regenerating #{ File.expand_path( 'Manifest.txt' ) }"
|
259
|
+
open( 'Manifest.txt', 'w' ) { |out| out.puts m }
|
260
|
+
@generated_manifest = true
|
261
|
+
else
|
262
|
+
puts "already generated"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
# Remove jars in jar_dest by wildcard expression
|
267
|
+
def remove_dest_jars
|
268
|
+
jars = Dir[ File.join( jar_dest, "*.jar" ) ].sort
|
269
|
+
FileUtils::rm_f jars unless jars.empty?
|
270
|
+
end
|
271
|
+
|
272
|
+
# The target/assembly path from which jars are linked
|
273
|
+
def jar_from
|
274
|
+
dirs = [ 'target' ]
|
275
|
+
|
276
|
+
unless maven_strategy == :no_assembly
|
277
|
+
dirs << [ assembly_name,
|
278
|
+
assembly_version,
|
279
|
+
'bin.dir' ].join( '-' )
|
280
|
+
end
|
281
|
+
|
282
|
+
File.join( dirs )
|
283
|
+
end
|
284
|
+
|
285
|
+
private
|
286
|
+
|
287
|
+
# The list of jars in jar_dest path, used during manifest generation
|
288
|
+
def dest_jars
|
289
|
+
if maven_strategy == :jars_from_assembly
|
290
|
+
|
291
|
+
# For manifest, map destination jars from available jars in
|
292
|
+
# (jar_from) target/assembly. These are available since mvn
|
293
|
+
# package will be run first for the :manifest target.
|
294
|
+
Dir[ File.join( jar_from, "*.jar" ) ].
|
295
|
+
map { |j| File.basename( j ) }.
|
296
|
+
sort.
|
297
|
+
map { |j| File.join( jar_dest, j ) }
|
298
|
+
else
|
299
|
+
Util::clean_list( jars ).
|
300
|
+
sort.
|
301
|
+
map { |j| File.join( jar_dest, j ) }
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
def existing( files )
|
306
|
+
files.find { |f| File.exist?( f ) }
|
307
|
+
end
|
308
|
+
|
309
|
+
# Return a default jar name built from name and version
|
310
|
+
def default_jar
|
311
|
+
"#{name}-#{version}.jar"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You may
|
6
|
+
# obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
module RJack::TarPit
|
18
|
+
|
19
|
+
module TestTaskDefiner
|
20
|
+
|
21
|
+
# Proc for setting Rake TestTask options
|
22
|
+
# (default: nil, no-op)
|
23
|
+
attr_accessor :test_task_config
|
24
|
+
|
25
|
+
# Support same options as Rake::TestTask, plus tarpit's own
|
26
|
+
# :mini_in_proc (default) option, which loads minitest tests and
|
27
|
+
# runs in (rake) process.
|
28
|
+
attr_accessor :test_loader
|
29
|
+
|
30
|
+
# Proc for setting RSpec::Core::RakeTask options
|
31
|
+
# (default: nil, no-op)
|
32
|
+
attr_accessor :rspec_task_config
|
33
|
+
|
34
|
+
def initialize
|
35
|
+
super
|
36
|
+
|
37
|
+
@test_loader = :mini_in_proc
|
38
|
+
@test_task_config = nil
|
39
|
+
@rspec_task_config = nil
|
40
|
+
|
41
|
+
add_define_hook( :define_test_tasks )
|
42
|
+
add_define_hook( :define_spec_tasks )
|
43
|
+
end
|
44
|
+
|
45
|
+
def define_spec_tasks
|
46
|
+
|
47
|
+
if File.directory?( "spec" ) || rspec_task_config
|
48
|
+
require 'rspec/core/rake_task'
|
49
|
+
|
50
|
+
desc "Run RSpec on specifications"
|
51
|
+
RSpec::Core::RakeTask.new( :spec ) do |t|
|
52
|
+
t.rspec_opts ||= []
|
53
|
+
t.rspec_opts += %w[ -Ispec:lib ]
|
54
|
+
rspec_task_config.call( t ) if rspec_task_config
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "Run RSpec on specifications"
|
58
|
+
task :test => [ :spec ]
|
59
|
+
|
60
|
+
task :default => [ :test ]
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
def define_test_tasks
|
66
|
+
|
67
|
+
if test_loader == :mini_in_proc
|
68
|
+
|
69
|
+
tfiles = FileList[ "test/test*.rb" ]
|
70
|
+
if !tfiles.empty?
|
71
|
+
|
72
|
+
desc "Run minitest tests (in rake process)"
|
73
|
+
task :test do |t,args|
|
74
|
+
require 'minitest/unit'
|
75
|
+
|
76
|
+
MiniTest::Unit.class_eval do
|
77
|
+
def self.autorun # :nodoc:
|
78
|
+
# disable autorun, as we are running ourselves
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
tfiles.each { |f| load f }
|
83
|
+
|
84
|
+
code = MiniTest::Unit.new.run( ( ENV['TESTOPTS'] || '' ).split )
|
85
|
+
fail "test failed (#{code})" if code && code > 0
|
86
|
+
puts
|
87
|
+
end
|
88
|
+
|
89
|
+
else
|
90
|
+
desc "No-op"
|
91
|
+
task :test
|
92
|
+
end
|
93
|
+
|
94
|
+
else
|
95
|
+
|
96
|
+
require 'rake/testtask'
|
97
|
+
|
98
|
+
Rake::TestTask.new do |t|
|
99
|
+
t.loader = test_loader
|
100
|
+
test_task_config.call( t ) if test_task_config
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
task :default => [ :test ]
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You
|
6
|
+
# may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
module RJack::TarPit
|
18
|
+
module Util
|
19
|
+
|
20
|
+
module_function
|
21
|
+
|
22
|
+
# Read a list of files and return a cleaned list.
|
23
|
+
def read_file_list( sfile )
|
24
|
+
clean_list( open( sfile ) { |f| f.readlines } )
|
25
|
+
end
|
26
|
+
|
27
|
+
# Cleanup a list of files
|
28
|
+
def clean_list( l )
|
29
|
+
Array( l ).
|
30
|
+
compact.
|
31
|
+
map { |f| f.strip }.
|
32
|
+
reject { |f| f.empty? }
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|