rjack-tarpit 1.0.0
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 +2 -0
- data/Manifest.txt +5 -0
- data/README.rdoc +68 -0
- data/Rakefile +39 -0
- data/lib/rjack-tarpit.rb +338 -0
- metadata +99 -0
data/History.rdoc
ADDED
data/Manifest.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
= rjack-tarpit
|
2
|
+
|
3
|
+
* http://rjack.rubyforge.org
|
4
|
+
* http://rubyforge.org/projects/rjack
|
5
|
+
|
6
|
+
== Description
|
7
|
+
|
8
|
+
TarPit provides the glue for an unholy union of build tools. Namely:
|
9
|
+
|
10
|
+
* Rake[http://github.com/jimweirich/rake] with
|
11
|
+
Hoe[http://seattlerb.rubyforge.org/hoe/] for gem publishing
|
12
|
+
* Maven[http://maven.apache.org/] for Java builds with dependencies.
|
13
|
+
|
14
|
+
In particular, it runs "mvn package" when needed, links jars to the
|
15
|
+
gem lib directory, and provides (semi-)automatic Manifest.txt
|
16
|
+
generation with these jar files without offending Hoe.
|
17
|
+
|
18
|
+
* The Maven pom.xml (and assembly.xml if needed) must be managed
|
19
|
+
independently.
|
20
|
+
* A Manifest.static file holds the static elements of the manifest.
|
21
|
+
|
22
|
+
== Synopsis
|
23
|
+
|
24
|
+
Rakefile example for a gem including a single jar, built from java
|
25
|
+
source with maven:
|
26
|
+
|
27
|
+
# -*- ruby -*-
|
28
|
+
$LOAD_PATH << './lib'
|
29
|
+
require 'mygem/version'
|
30
|
+
|
31
|
+
require 'rubygems'
|
32
|
+
gem 'rjack-tarpit', '~> 1.0.0'
|
33
|
+
require 'rjack-tarpit'
|
34
|
+
|
35
|
+
t = RJack::TarPit.new( 'mygem', MyGem::VERSION, :no_assembly )
|
36
|
+
|
37
|
+
t.specify do |h|
|
38
|
+
h.developer( "David Kellum", "dek-oss@gravitext.com" )
|
39
|
+
h.extra_deps += [ [ 'rjack-slf4j', '~> 1.5.8' ],
|
40
|
+
[ 'rjack-logback, '~> 1.9.16' ] ]
|
41
|
+
end
|
42
|
+
|
43
|
+
file 'Manifest.txt' => [ 'lib/mygem/version.rb' ]
|
44
|
+
|
45
|
+
t.define_tasks
|
46
|
+
|
47
|
+
== Dependencies
|
48
|
+
|
49
|
+
Besides the explicit gem dependencies, TarPit requires:
|
50
|
+
|
51
|
+
* rake 0.8.7+ (currently bundled with JRuby 1.3)
|
52
|
+
* Apache Maven 2.x ('mvn' command on path)
|
53
|
+
|
54
|
+
== License
|
55
|
+
|
56
|
+
Copyright (c) 2009 David Kellum
|
57
|
+
|
58
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you
|
59
|
+
may not use this file except in compliance with the License. You
|
60
|
+
may obtain a copy of the License at:
|
61
|
+
|
62
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
63
|
+
|
64
|
+
Unless required by applicable law or agreed to in writing, software
|
65
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
66
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
67
|
+
implied. See the License for the specific language governing
|
68
|
+
permissions and limitations under the License.
|
data/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2009 David Kellum
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
6
|
+
# may not use this file except in compliance with the License. You
|
7
|
+
# may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
14
|
+
# implied. See the License for the specific language governing
|
15
|
+
# permissions and limitations under the License.
|
16
|
+
#++
|
17
|
+
|
18
|
+
$LOAD_PATH << './lib'
|
19
|
+
require 'rubygems'
|
20
|
+
|
21
|
+
# Use same hoe version for building gem plus this gem's dependency
|
22
|
+
hoe_version = '~> 2.3.3'
|
23
|
+
gem 'hoe', hoe_version
|
24
|
+
require 'rjack-tarpit'
|
25
|
+
|
26
|
+
include RJack
|
27
|
+
|
28
|
+
t = TarPit.new( 'rjack-tarpit', TarPit::VERSION )
|
29
|
+
|
30
|
+
t.specify do |h|
|
31
|
+
h.developer( 'David Kellum', 'dek-oss@gravitext.com' )
|
32
|
+
h.extra_deps += [ [ 'hoe', hoe_version ],
|
33
|
+
[ 'rdoc', '~> 2.4' ],
|
34
|
+
[ 'rubyforge', '~> 1.0.3' ] ]
|
35
|
+
h.rubyforge_name = 'rjack'
|
36
|
+
h.remote_rdoc_dir = 'tarpit'
|
37
|
+
end
|
38
|
+
|
39
|
+
t.define_tasks
|
data/lib/rjack-tarpit.rb
ADDED
@@ -0,0 +1,338 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2009 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
|
+
require 'hoe'
|
18
|
+
|
19
|
+
# Silly Hoe sets up DOT with rdoc unless this is set.
|
20
|
+
ENV['NODOT'] = "no thanks"
|
21
|
+
|
22
|
+
module RJack
|
23
|
+
|
24
|
+
# Provides glue for Rake, Hoe, and Maven by generating tasks.
|
25
|
+
module TarPit
|
26
|
+
# Module version
|
27
|
+
VERSION = '1.0.0'
|
28
|
+
|
29
|
+
# Construct new task generator by gem name, version, and flags. A descendant
|
30
|
+
# of BaseStrategy is returned.
|
31
|
+
# ==== flags
|
32
|
+
# :jars_from_assembly:: jars will be found in assembly rather then
|
33
|
+
# set in Rakefile.
|
34
|
+
# :no_assembly:: One jar created from source, jars=[default_jar],
|
35
|
+
# no assembly setup in maven.
|
36
|
+
def self.new( name, version, *flags )
|
37
|
+
if flags.include?( :jars_from_assembly )
|
38
|
+
JarsFromAssembly.new( name, version, flags )
|
39
|
+
else
|
40
|
+
BaseStrategy.new( name, version, flags )
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Base strategy implementation where jars are known by the
|
45
|
+
# Rakefile (not :jars_from_assembly)
|
46
|
+
class BaseStrategy
|
47
|
+
|
48
|
+
# Name of gem as constructed.
|
49
|
+
attr_reader :name
|
50
|
+
# Version of gem as constructed.
|
51
|
+
attr_reader :version
|
52
|
+
|
53
|
+
# The set of jar file names (without path) to include. May be
|
54
|
+
# lazily computed by other strategies.
|
55
|
+
attr_accessor :jars
|
56
|
+
|
57
|
+
# Destination path for any jars [Default: lib/name]
|
58
|
+
attr_accessor :jar_dest
|
59
|
+
|
60
|
+
# Any additional generated files to be included [Default: nil]
|
61
|
+
attr_accessor :generated_files
|
62
|
+
|
63
|
+
# The name of the assembly [Default: name]
|
64
|
+
attr_writer :assembly_name
|
65
|
+
|
66
|
+
# The version of the assembly, which might be static
|
67
|
+
# (i.e. "1.0") if the pom is not shared (dependency jars only)
|
68
|
+
# [Default: version]
|
69
|
+
attr_writer :assembly_version
|
70
|
+
|
71
|
+
# See TarPit.new
|
72
|
+
def initialize( name, version, flags )
|
73
|
+
@name = name
|
74
|
+
@version = version
|
75
|
+
@flags = flags
|
76
|
+
@jars = [ default_jar ] if @flags.include?( :no_assembly )
|
77
|
+
@jar_dest = File.join( 'lib', @name )
|
78
|
+
@hoe_specifier = :unset
|
79
|
+
end
|
80
|
+
|
81
|
+
# Return a default jar name built from name and version
|
82
|
+
def default_jar
|
83
|
+
"#{name}-#{version}.jar"
|
84
|
+
end
|
85
|
+
|
86
|
+
# Specify gem project details, yielding Hoe instance to block
|
87
|
+
# after setting various defaults. Thus all Hoe.spec setters are
|
88
|
+
# valid in this block. The actual Hoe construction and execution
|
89
|
+
# of block is deferred to define_tasks.
|
90
|
+
def specify( &block )
|
91
|
+
@hoe_specifier = block
|
92
|
+
end
|
93
|
+
|
94
|
+
# Define all tasks based on provided details. In this strategy,
|
95
|
+
# the Manifest.txt task will be invoked prior to calling
|
96
|
+
# Hoe.spec, thus any additional Manifest.txt dependencies
|
97
|
+
# should be specified prior to this call.
|
98
|
+
def define_tasks
|
99
|
+
define_maven_package_task if jars
|
100
|
+
|
101
|
+
if jars || generated_files
|
102
|
+
mtask = define_manifest_task
|
103
|
+
|
104
|
+
# The manifest needs to run before hoe_specify
|
105
|
+
mtask.invoke
|
106
|
+
end
|
107
|
+
|
108
|
+
define_post_maven_tasks if jars
|
109
|
+
|
110
|
+
hoe_specify
|
111
|
+
|
112
|
+
define_git_tag
|
113
|
+
end
|
114
|
+
|
115
|
+
# Define task for dynamically generating Manifest.txt, by
|
116
|
+
# appending array returned by the given block to specified files, or
|
117
|
+
# contents of Manifest.static.
|
118
|
+
def define_manifest_task
|
119
|
+
|
120
|
+
if File.exist?( 'Manifest.static' )
|
121
|
+
file 'Manifest.txt' => [ 'Manifest.static' ]
|
122
|
+
end
|
123
|
+
|
124
|
+
gf = clean_list( generated_files ).sort
|
125
|
+
[ :gem, :test ].each { |t| task t => gf }
|
126
|
+
|
127
|
+
unless gf.empty?
|
128
|
+
task :gen_clean do
|
129
|
+
rm_f gf
|
130
|
+
end
|
131
|
+
task :clean => :gen_clean
|
132
|
+
end
|
133
|
+
|
134
|
+
desc "Force update of Manifest.txt"
|
135
|
+
task :manifest do
|
136
|
+
generate_manifest
|
137
|
+
end
|
138
|
+
|
139
|
+
mtask = file 'Manifest.txt' do
|
140
|
+
generate_manifest
|
141
|
+
end
|
142
|
+
|
143
|
+
mtask
|
144
|
+
end
|
145
|
+
|
146
|
+
# File touched to record the time of last successful 'mvn
|
147
|
+
# package' run.
|
148
|
+
MVN_STATE_FILE = 'target/.tarpit'
|
149
|
+
|
150
|
+
# Define a file task tracking calls to "mvn package"
|
151
|
+
def define_maven_package_task
|
152
|
+
file MVN_STATE_FILE => maven_dependencies do
|
153
|
+
sh( 'mvn package' ) do |ok,res|
|
154
|
+
if ok
|
155
|
+
touch( MVN_STATE_FILE )
|
156
|
+
else
|
157
|
+
raise "TARPIT: 'mvn package' failed."
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
# Define file tasks for all jar symlinks and other misc. maven
|
164
|
+
# associated tasks like :mvn_clean.
|
165
|
+
def define_post_maven_tasks
|
166
|
+
jfrom = jar_from
|
167
|
+
jars.each do |jar|
|
168
|
+
from = File.join( jfrom, jar )
|
169
|
+
dest = File.join( jar_dest, jar )
|
170
|
+
file from => [ MVN_STATE_FILE ]
|
171
|
+
file dest => [ from ] do
|
172
|
+
ln_sf( File.join( '..', '..', from ), dest )
|
173
|
+
end
|
174
|
+
[ :gem, :test ].each { |t| task t => [ dest ] }
|
175
|
+
end
|
176
|
+
|
177
|
+
task :mvn_clean do
|
178
|
+
remove_dest_jars
|
179
|
+
sh 'mvn clean'
|
180
|
+
end
|
181
|
+
task :clean => :mvn_clean
|
182
|
+
end
|
183
|
+
|
184
|
+
# Dependencies on "mvn package" including pom.xml, any assembly.xml,
|
185
|
+
# all files under the "src" directory.
|
186
|
+
def maven_dependencies
|
187
|
+
deps = [ 'pom.xml' ]
|
188
|
+
deps << 'assembly.xml' if File.exist?( 'assembly.xml' )
|
189
|
+
deps += FileList[ "src/**/*" ].exclude { |f| ! File.file?( f ) }
|
190
|
+
deps
|
191
|
+
end
|
192
|
+
|
193
|
+
# Define git based :tag task
|
194
|
+
def define_git_tag
|
195
|
+
task :tag do
|
196
|
+
tag = [ name, version ].join( '-' )
|
197
|
+
dname = File.dirname( __FILE__ )
|
198
|
+
dname = '.' if Dir.getwd == dname
|
199
|
+
sh( "git status --only #{dname}" ) do |ok,res|
|
200
|
+
if ok #changes present
|
201
|
+
raise "Commit these changes before tagging."
|
202
|
+
end
|
203
|
+
end
|
204
|
+
sh %{git tag -s -f -m "tag [#{tag}]" "#{tag}"}
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
# Setup Hoe via Hoe.spec
|
209
|
+
def hoe_specify
|
210
|
+
unless @hoe_specifier == :unset
|
211
|
+
tp = self
|
212
|
+
outer = @hoe_specifier
|
213
|
+
Hoe.spec( @name ) do |h|
|
214
|
+
h.version = tp.version
|
215
|
+
|
216
|
+
h.readme_file = 'README.rdoc' if File.exist?( 'README.rdoc' )
|
217
|
+
h.history_file = 'History.rdoc' if File.exist?( 'History.rdoc' )
|
218
|
+
h.extra_rdoc_files = FileList[ '*.rdoc' ]
|
219
|
+
|
220
|
+
outer.call( h )
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
# Generate Manifest.txt
|
226
|
+
def generate_manifest
|
227
|
+
remove_dest_jars
|
228
|
+
|
229
|
+
m = []
|
230
|
+
if File.exist?( 'Manifest.static' )
|
231
|
+
m += read_file_list( 'Manifest.static' )
|
232
|
+
end
|
233
|
+
m += clean_list( generated_files ).sort
|
234
|
+
m += dest_jars
|
235
|
+
|
236
|
+
puts "TARPIT: Updating Manifest.txt"
|
237
|
+
open( 'Manifest.txt', 'w' ) { |out| out.puts m }
|
238
|
+
end
|
239
|
+
|
240
|
+
# Remove jars in jar_dest by wildcard expression
|
241
|
+
def remove_dest_jars
|
242
|
+
jars = FileList[ File.join( jar_dest, "*.jar" ) ].sort
|
243
|
+
rm_f jars unless jars.empty?
|
244
|
+
end
|
245
|
+
|
246
|
+
# The list of jars in jar_dest path, used during manifest generation
|
247
|
+
def dest_jars
|
248
|
+
clean_list( jars ).sort.map { |j| File.join( jar_dest, j ) }
|
249
|
+
end
|
250
|
+
|
251
|
+
# The target/assembly path from which jars are linked
|
252
|
+
def jar_from
|
253
|
+
dirs = [ 'target' ]
|
254
|
+
|
255
|
+
unless @flags.include?( :no_assembly )
|
256
|
+
dirs << [ @assembly_name || name,
|
257
|
+
@assembly_version || version,
|
258
|
+
'bin.dir' ].join('-')
|
259
|
+
end
|
260
|
+
|
261
|
+
File.join( dirs )
|
262
|
+
end
|
263
|
+
|
264
|
+
# Read a list of files and return a cleaned list.
|
265
|
+
def read_file_list( sfile )
|
266
|
+
clean_list( open( sfile ) { |f| f.readlines } )
|
267
|
+
end
|
268
|
+
|
269
|
+
# Cleanup a list of files
|
270
|
+
def clean_list( l )
|
271
|
+
l = l.to_a.compact
|
272
|
+
l.map! { |f| f.strip }
|
273
|
+
l.map! { |f| f.empty? ? nil : f }
|
274
|
+
l.compact!
|
275
|
+
l
|
276
|
+
end
|
277
|
+
|
278
|
+
end
|
279
|
+
|
280
|
+
# Strategy in which the jars are inferred only by inspecting the
|
281
|
+
# the completed maven assembly. The :manifest task is thus
|
282
|
+
# dependent on 'mvn package'. Manifest changes need to be manually
|
283
|
+
# incorporated by explicitly running "jrake manifest"
|
284
|
+
class JarsFromAssembly < BaseStrategy
|
285
|
+
|
286
|
+
# Define all tasks based on provided details. Don't invoke
|
287
|
+
# Manifest.txt before Hoe, just use whats already in place.
|
288
|
+
def define_tasks
|
289
|
+
define_maven_package_task
|
290
|
+
|
291
|
+
mtask = define_manifest_task
|
292
|
+
|
293
|
+
task :manifest => [ MVN_STATE_FILE ]
|
294
|
+
|
295
|
+
define_post_maven_tasks
|
296
|
+
|
297
|
+
hoe_specify
|
298
|
+
|
299
|
+
define_git_tag
|
300
|
+
end
|
301
|
+
|
302
|
+
# For manifest, map destination jars from available jars in
|
303
|
+
# (jar_from) target/assembly. These are available since mvn
|
304
|
+
# package will be run first for the :manifest target.
|
305
|
+
def dest_jars
|
306
|
+
jars = FileList[ File.join( jar_from, "*.jar" ) ]
|
307
|
+
jars = jars.map { |j| File.basename( j ) }.sort
|
308
|
+
jars.map { |j| File.join( jar_dest, j ) }
|
309
|
+
end
|
310
|
+
|
311
|
+
# Extract jar files from saved Manifest state, since
|
312
|
+
# neither from or dest jars may be available at call time.
|
313
|
+
def jars
|
314
|
+
unless @jars
|
315
|
+
files = read_file_list( 'Manifest.txt' ).select { |f| f =~ /\.jar$/ }
|
316
|
+
@jars = files.map { |f| File.basename( f ) }
|
317
|
+
end
|
318
|
+
@jars
|
319
|
+
end
|
320
|
+
|
321
|
+
end
|
322
|
+
|
323
|
+
end
|
324
|
+
|
325
|
+
end
|
326
|
+
|
327
|
+
# Replace special Hoe development dependency with rjack-tarpit (which
|
328
|
+
# itself depends on constrained version of Hoe.)
|
329
|
+
class Hoe
|
330
|
+
def add_dependencies
|
331
|
+
self.extra_deps = normalize_deps extra_deps
|
332
|
+
self.extra_dev_deps = normalize_deps extra_dev_deps
|
333
|
+
|
334
|
+
unless name == 'rjack-tarpit'
|
335
|
+
extra_dev_deps << [ 'rjack-tarpit', "~> #{ RJack::TarPit::VERSION }" ]
|
336
|
+
end
|
337
|
+
end
|
338
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
3
|
+
requirements:
|
4
|
+
- - '>='
|
5
|
+
- !ruby/object:Gem::Version
|
6
|
+
version: "0"
|
7
|
+
version:
|
8
|
+
email:
|
9
|
+
- dek-oss@gravitext.com
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
summary: TarPit provides the glue for an unholy union of build tools
|
13
|
+
post_install_message:
|
14
|
+
extra_rdoc_files:
|
15
|
+
- Manifest.txt
|
16
|
+
- README.rdoc
|
17
|
+
- History.rdoc
|
18
|
+
homepage: http://rjack.rubyforge.org
|
19
|
+
signing_key:
|
20
|
+
name: rjack-tarpit
|
21
|
+
rdoc_options:
|
22
|
+
- --main
|
23
|
+
- README.rdoc
|
24
|
+
rubyforge_project: rjack
|
25
|
+
autorequire:
|
26
|
+
licenses: []
|
27
|
+
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
description: "TarPit provides the glue for an unholy union of build tools. Namely:\n\
|
31
|
+
\n* Rake[http://github.com/jimweirich/rake] with\n Hoe[http://seattlerb.rubyforge.org/hoe/] \
|
32
|
+
for gem publishing\n* Maven[http://maven.apache.org/] for Java builds with dependencies.\n\
|
33
|
+
\nIn particular, it runs \"mvn package\" when needed, links jars to the\ngem lib \
|
34
|
+
directory, and provides (semi-)automatic Manifest.txt\ngeneration with these jar \
|
35
|
+
files without offending Hoe.\n\n* The Maven pom.xml (and assembly.xml if needed) \
|
36
|
+
must be managed\n independently.\n* A Manifest.static file holds the static elements \
|
37
|
+
of the manifest."
|
38
|
+
specification_version: 3
|
39
|
+
default_executable:
|
40
|
+
files:
|
41
|
+
- Manifest.txt
|
42
|
+
- History.rdoc
|
43
|
+
- README.rdoc
|
44
|
+
- Rakefile
|
45
|
+
- lib/rjack-tarpit.rb
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "0"
|
51
|
+
version:
|
52
|
+
extensions: []
|
53
|
+
|
54
|
+
rubygems_version: 1.3.3
|
55
|
+
requirements: []
|
56
|
+
|
57
|
+
authors:
|
58
|
+
- David Kellum
|
59
|
+
date: 2009-10-10 07:00:00 +00:00
|
60
|
+
platform: ruby
|
61
|
+
test_files: []
|
62
|
+
|
63
|
+
version: !ruby/object:Gem::Version
|
64
|
+
version: 1.0.0
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
dependencies:
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 2.3.3
|
74
|
+
version:
|
75
|
+
type: :runtime
|
76
|
+
version_requirement:
|
77
|
+
name: hoe
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "2.4"
|
84
|
+
version:
|
85
|
+
type: :runtime
|
86
|
+
version_requirement:
|
87
|
+
name: rdoc
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.0.3
|
94
|
+
version:
|
95
|
+
type: :runtime
|
96
|
+
version_requirement:
|
97
|
+
name: rubyforge
|
98
|
+
bindir: bin
|
99
|
+
has_rdoc: true
|