hen 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +5 -0
- data/Rakefile +1 -1
- data/example/project/Rakefile +1 -1
- data/lib/hen.rb +7 -8
- data/lib/hen/dsl.rb +32 -28
- data/lib/hen/version.rb +2 -2
- data/lib/hens/gem.rake +2 -6
- data/lib/hens/rdoc.rake +8 -13
- data/lib/hens/spec.rake +3 -3
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cca013795ab8838dedb03aab88a80addc25210e
|
4
|
+
data.tar.gz: e5394e737b54e49e6066ae511c830d94f2486c68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da08775b2518dfa345cf05f854ea928a03dd972d32e094c22da59ffdbf9e5b91d29b9f375ddb4a08409b261e9b0fa4088669b83c922d35f00ae6641a46a0b618
|
7
|
+
data.tar.gz: 89321c2b52aa71714342fd731c64ce9b2da52063bcc215f9679bdce87433a11a6fefaa2d7134cdad7558ba605c3d6779e461a8398f03adad36b4b5d5a28560a9
|
data/ChangeLog
CHANGED
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ Hen.lay! {{
|
|
10
10
|
"helper that fits my own personal style.",
|
11
11
|
:author => %q{Jens Wille},
|
12
12
|
:email => %q{jens.wille@gmail.com},
|
13
|
-
:license => %q{AGPL},
|
13
|
+
:license => %q{AGPL-3.0},
|
14
14
|
:homepage => :blackwinter,
|
15
15
|
:extra_files => FileList['lib/hens/*.rake'].to_a,
|
16
16
|
:dependencies => [['ruby-nuggets', '>= 0.8.4'], 'highline']
|
data/example/project/Rakefile
CHANGED
data/lib/hen.rb
CHANGED
@@ -87,13 +87,13 @@ class Hen
|
|
87
87
|
# Extract potential options hash
|
88
88
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
89
89
|
|
90
|
-
@verbose = options[:verbose] if options.
|
90
|
+
@verbose = options[:verbose] if options.key?(:verbose)
|
91
91
|
|
92
92
|
yield.each { |key, value| config[key].update(value) } if block_given?
|
93
93
|
|
94
94
|
# Handle include/exclude requirements
|
95
95
|
excl = options[:exclude]
|
96
|
-
args, default = args.empty? ? [excl
|
96
|
+
args, default = args.empty? ? [Array(excl), true] : [args, false]
|
97
97
|
|
98
98
|
inclexcl = Hash.new(default)
|
99
99
|
args.each { |arg| inclexcl[arg.to_s] = !default }
|
@@ -242,13 +242,13 @@ class Hen
|
|
242
242
|
def initialize(args, overwrite = false, &block)
|
243
243
|
@name, @dependencies = resolve_args(args)
|
244
244
|
|
245
|
+
@laid = false
|
246
|
+
|
245
247
|
unless @block = block
|
246
248
|
raise LocalJumpError, "#{@name}: no block given" if verbose
|
247
249
|
return
|
248
250
|
end
|
249
251
|
|
250
|
-
@laid = false
|
251
|
-
|
252
252
|
self.class.add_hen(self, overwrite)
|
253
253
|
end
|
254
254
|
|
@@ -259,6 +259,8 @@ class Hen
|
|
259
259
|
def lay!
|
260
260
|
return if laid?
|
261
261
|
|
262
|
+
@laid = true
|
263
|
+
|
262
264
|
# Call dependencies first
|
263
265
|
dependencies.each { |hen| self.class[hen].lay! }
|
264
266
|
|
@@ -306,10 +308,7 @@ class Hen
|
|
306
308
|
#
|
307
309
|
# Keeps track of whether the block has already been executed.
|
308
310
|
def laid?
|
309
|
-
|
310
|
-
|
311
|
-
@laid = true
|
312
|
-
false
|
311
|
+
@laid
|
313
312
|
end
|
314
313
|
|
315
314
|
end
|
data/lib/hen/dsl.rb
CHANGED
@@ -63,14 +63,14 @@ class Hen
|
|
63
63
|
|
64
64
|
# Define task +t+, but overwrite any existing task of that name!
|
65
65
|
# (Rake usually just adds them up.)
|
66
|
-
def task!(t, *args)
|
66
|
+
def task!(t, *args, &block)
|
67
67
|
Rake.application.instance_variable_get(:@tasks).delete(t.to_s)
|
68
|
-
task(t, *args, &
|
68
|
+
task(t, *args, &block)
|
69
69
|
end
|
70
70
|
|
71
71
|
# Return true if task +t+ is defined, false otherwise.
|
72
72
|
def have_task?(t)
|
73
|
-
Rake.application.instance_variable_get(:@tasks).
|
73
|
+
Rake.application.instance_variable_get(:@tasks).key?(t.to_s)
|
74
74
|
end
|
75
75
|
|
76
76
|
# Find a command that is executable and run it. Intended for
|
@@ -102,10 +102,10 @@ class Hen
|
|
102
102
|
managed_files = [:git, :svn].find { |scm|
|
103
103
|
res = send(scm) { |scm_obj| scm_obj.managed_files }
|
104
104
|
break res if res
|
105
|
-
} if !options.
|
105
|
+
} if !options.key?(:managed) || options[:managed]
|
106
106
|
|
107
|
-
args.each { |files|
|
108
|
-
files
|
107
|
+
args.compact.each { |files|
|
108
|
+
files.uniq!
|
109
109
|
|
110
110
|
if managed_files
|
111
111
|
files.replace(files & managed_files)
|
@@ -147,14 +147,14 @@ class Hen
|
|
147
147
|
# RubyForge project is defined. Yields the RubyForge configuration
|
148
148
|
# hash and, optionally, a proc to obtain RubyForge objects from (via
|
149
149
|
# +call+; reaching out to #init_rubyforge).
|
150
|
-
def rubyforge
|
150
|
+
def rubyforge(&block)
|
151
151
|
rf_config = config[:rubyforge]
|
152
152
|
rf_project = rf_config[:project]
|
153
153
|
|
154
154
|
if rf_project && !rf_project.empty? && have_rubyforge?
|
155
155
|
rf_config[:package] ||= rf_project
|
156
156
|
|
157
|
-
call_block(
|
157
|
+
call_block(block, rf_config) { |*args|
|
158
158
|
init_rubyforge(args.empty? || args.first)
|
159
159
|
}
|
160
160
|
else
|
@@ -166,28 +166,28 @@ class Hen
|
|
166
166
|
# RubyGem's 'push' command is not available. Yields an optional
|
167
167
|
# proc to obtain RubyGems (pseudo-)objects from (via +call+;
|
168
168
|
# reaching out to #init_rubygems).
|
169
|
-
def rubygems
|
169
|
+
def rubygems(&block)
|
170
170
|
if have_rubygems?
|
171
|
-
call_block(
|
171
|
+
call_block(block) { |*args| init_rubygems }
|
172
172
|
else
|
173
173
|
skipping 'RubyGems'
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
177
177
|
# DEPRECATED: Use #rubygems instead.
|
178
|
-
def gemcutter
|
178
|
+
def gemcutter(&block)
|
179
179
|
warn "#{self}#gemcutter is deprecated; use `rubygems' instead."
|
180
|
-
rubygems(&
|
180
|
+
rubygems(&block)
|
181
181
|
end
|
182
182
|
|
183
183
|
# Encapsulates tasks targeting at Git, skipping those if the current
|
184
|
-
# project
|
184
|
+
# project is not controlled by Git. Yields a Git object via #init_git.
|
185
185
|
def git
|
186
186
|
have_git? ? yield(init_git) : skipping('Git')
|
187
187
|
end
|
188
188
|
|
189
189
|
# Encapsulates tasks targeting at SVN, skipping those if the current
|
190
|
-
# project
|
190
|
+
# project is not controlled by SVN. Yields an SVN object via #init_svn.
|
191
191
|
def svn
|
192
192
|
have_svn? ? yield(init_svn) : skipping('SVN')
|
193
193
|
end
|
@@ -229,7 +229,7 @@ class Hen
|
|
229
229
|
|
230
230
|
Gem::Commands::PushCommand
|
231
231
|
rescue LoadError, NameError
|
232
|
-
missing_lib 'gemcutter'
|
232
|
+
missing_lib 'rubygems (gemcutter)'
|
233
233
|
end
|
234
234
|
|
235
235
|
# Checks whether the current project is managed by Git.
|
@@ -256,6 +256,8 @@ class Hen
|
|
256
256
|
# Prepare the use of RubyGems.org. Returns the RubyGems
|
257
257
|
# (pseudo-)object.
|
258
258
|
def init_rubygems
|
259
|
+
return unless have_rubygems?
|
260
|
+
|
259
261
|
pseudo_object {
|
260
262
|
def method_missing(cmd, *args) # :nodoc:
|
261
263
|
run(cmd, *args)
|
@@ -264,15 +266,17 @@ class Hen
|
|
264
266
|
def run(cmd, *args) # :nodoc:
|
265
267
|
Gem::CommandManager.instance.run([cmd.to_s.tr('_', '-'), *args])
|
266
268
|
end
|
267
|
-
}
|
269
|
+
}
|
268
270
|
end
|
269
271
|
|
270
272
|
# Prepare the use of Git. Returns the Git (pseudo-)object.
|
271
273
|
def init_git
|
274
|
+
return unless have_git?
|
275
|
+
|
272
276
|
pseudo_object {
|
273
277
|
def method_missing(cmd, *args) # :nodoc:
|
274
278
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
275
|
-
options[:verbose] = Hen.verbose unless options.
|
279
|
+
options[:verbose] = Hen.verbose unless options.key?(:verbose)
|
276
280
|
|
277
281
|
DSL.send(:sh, 'git', cmd.to_s.tr('_', '-'), *args << options)
|
278
282
|
end
|
@@ -323,15 +327,17 @@ class Hen
|
|
323
327
|
def managed_files # :nodoc:
|
324
328
|
run(:ls_files).split($/)
|
325
329
|
end
|
326
|
-
}
|
330
|
+
}
|
327
331
|
end
|
328
332
|
|
329
333
|
# Prepare the use of SVN. Returns the SVN (pseudo-)object.
|
330
334
|
def init_svn
|
335
|
+
return unless have_svn?
|
336
|
+
|
331
337
|
pseudo_object {
|
332
338
|
def method_missing(cmd, *args) # :nodoc:
|
333
339
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
334
|
-
options[:verbose] = Hen.verbose unless options.
|
340
|
+
options[:verbose] = Hen.verbose unless options.key?(:verbose)
|
335
341
|
|
336
342
|
DSL.send(:sh, 'svn', cmd.to_s.tr('_', '-'), *args << options)
|
337
343
|
end
|
@@ -347,16 +353,14 @@ class Hen
|
|
347
353
|
def managed_files # :nodoc:
|
348
354
|
run(:list, '--recursive').split($/)
|
349
355
|
end
|
350
|
-
}
|
356
|
+
}
|
351
357
|
end
|
352
358
|
|
353
359
|
# Extend +object+ with given +blocks+.
|
354
|
-
def extend_object(object, *blocks)
|
355
|
-
blocks << Proc.new if block_given?
|
356
|
-
|
360
|
+
def extend_object(object, *blocks, &block2)
|
357
361
|
singleton_class = object.singleton_class
|
358
362
|
|
359
|
-
blocks.compact.reverse_each { |block|
|
363
|
+
blocks.push(block2).compact.reverse_each { |block|
|
360
364
|
singleton_class.class_eval(&block)
|
361
365
|
}
|
362
366
|
|
@@ -364,8 +368,8 @@ class Hen
|
|
364
368
|
end
|
365
369
|
|
366
370
|
# Create a (pseudo-)object.
|
367
|
-
def pseudo_object
|
368
|
-
extend_object(Object.new,
|
371
|
+
def pseudo_object(&block)
|
372
|
+
extend_object(Object.new, block) {
|
369
373
|
instance_methods.each { |method|
|
370
374
|
undef_method(method) unless method =~ /\A__|\Aobject_id\z/
|
371
375
|
}
|
@@ -374,8 +378,8 @@ class Hen
|
|
374
378
|
|
375
379
|
# Calls block +block+ with +args+, appending an
|
376
380
|
# optional passed block if requested by +block+.
|
377
|
-
def call_block(block, *args)
|
378
|
-
args <<
|
381
|
+
def call_block(block, *args, &block2)
|
382
|
+
args << block2 if block.arity > args.size
|
379
383
|
block[*args]
|
380
384
|
end
|
381
385
|
|
data/lib/hen/version.rb
CHANGED
data/lib/hens/gem.rake
CHANGED
@@ -248,11 +248,7 @@ Hen :gem => :rdoc do
|
|
248
248
|
pkg.need_zip = true
|
249
249
|
|
250
250
|
if defined?(ZIP_COMMANDS)
|
251
|
-
pkg.zip_command =
|
252
|
-
require 'nuggets/file/which'
|
253
|
-
File.which_command(ZIP_COMMANDS)
|
254
|
-
rescue LoadError
|
255
|
-
end || ZIP_COMMANDS.first
|
251
|
+
pkg.zip_command = File.which_command(ZIP_COMMANDS) || ZIP_COMMANDS.first
|
256
252
|
end
|
257
253
|
}
|
258
254
|
|
@@ -296,7 +292,7 @@ Hen :gem => :rdoc do
|
|
296
292
|
extension_options[:lib_dir] ||= File.join(['lib', ext_name, ENV['FAT_DIR']].compact)
|
297
293
|
extension_options[:ext_dir] ||= File.join(['ext', ext_name])
|
298
294
|
|
299
|
-
unless extension_options.
|
295
|
+
unless extension_options.key?(:cross_compile)
|
300
296
|
extension_options[:cross_compile] = true
|
301
297
|
end
|
302
298
|
|
data/lib/hens/rdoc.rake
CHANGED
@@ -3,6 +3,7 @@ Hen :rdoc do
|
|
3
3
|
rdoc_options = {
|
4
4
|
:rdoc_dir => 'doc',
|
5
5
|
:rdoc_files => %w[README COPYING ChangeLog lib/**/*.rb ext/**/*.c],
|
6
|
+
:title => '{name:%s }Application documentation{version: (v%s)}',
|
6
7
|
:charset => 'UTF-8',
|
7
8
|
:inline_source => true,
|
8
9
|
:line_numbers => true,
|
@@ -21,19 +22,13 @@ Hen :rdoc do
|
|
21
22
|
Rake::RDocTask
|
22
23
|
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
if version = config[:gem][:version]
|
32
|
-
title << " (v#{version})"
|
33
|
-
end
|
25
|
+
info = {
|
26
|
+
'name' => project_name(*config.values_at(:rubyforge, :gem)),
|
27
|
+
'version' => config[:gem][:version],
|
28
|
+
'date' => Date.today.to_s
|
29
|
+
}
|
34
30
|
|
35
|
-
|
36
|
-
end
|
31
|
+
rdoc_options[:title].gsub!(/\{(\w+):(.*?)\}/) { i = info[$1] and $2 % i }
|
37
32
|
|
38
33
|
### rdoc_dir
|
39
34
|
|
@@ -95,7 +90,7 @@ Hen :rdoc do
|
|
95
90
|
}
|
96
91
|
end
|
97
92
|
|
98
|
-
publish_desc =
|
93
|
+
publish_desc = 'Publish RDoc documentation'
|
99
94
|
|
100
95
|
git do |git|
|
101
96
|
|
data/lib/hens/spec.rake
CHANGED
@@ -46,7 +46,7 @@ Hen :spec do
|
|
46
46
|
spec_opts = map_options(spec_options)
|
47
47
|
|
48
48
|
if opts_file && File.readable?(opts_file)
|
49
|
-
File.readlines(opts_file).each { |
|
49
|
+
File.readlines(opts_file).each { |line| spec_opts << line.chomp }
|
50
50
|
end
|
51
51
|
|
52
52
|
spec_block = lambda { |t|
|
@@ -69,12 +69,12 @@ Hen :spec do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
#desc "Run specs with RCov"
|
72
|
-
spec_klass.new('spec:rcov')
|
72
|
+
spec_klass.new('spec:rcov') { |t|
|
73
73
|
spec_block[t]
|
74
74
|
|
75
75
|
t.rcov = true
|
76
76
|
t.rcov_opts = rcov_opts
|
77
|
-
|
77
|
+
}
|
78
78
|
end
|
79
79
|
|
80
80
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-nuggets
|
@@ -74,22 +74,22 @@ files:
|
|
74
74
|
- example/project/lib/__progname__/version.rb
|
75
75
|
homepage: http://github.com/blackwinter/hen
|
76
76
|
licenses:
|
77
|
-
- AGPL
|
77
|
+
- AGPL-3.0
|
78
78
|
metadata: {}
|
79
79
|
post_install_message: |2+
|
80
80
|
|
81
|
-
hen-0.
|
81
|
+
hen-0.5.0 [2013-12-19]:
|
82
82
|
|
83
|
-
* Added
|
84
|
-
*
|
83
|
+
* Added support for substitution directives in RDoc titles.
|
84
|
+
* General cleanup and refactoring.
|
85
85
|
|
86
86
|
rdoc_options:
|
87
|
+
- "--title"
|
88
|
+
- hen Application documentation (v0.5.0)
|
87
89
|
- "--charset"
|
88
90
|
- UTF-8
|
89
91
|
- "--line-numbers"
|
90
92
|
- "--all"
|
91
|
-
- "--title"
|
92
|
-
- hen Application documentation (v0.4.9)
|
93
93
|
- "--main"
|
94
94
|
- README
|
95
95
|
require_paths:
|
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
version: '0'
|
107
107
|
requirements: []
|
108
108
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.1.
|
109
|
+
rubygems_version: 2.1.11
|
110
110
|
signing_key:
|
111
111
|
specification_version: 4
|
112
112
|
summary: Hoe or Echoe? No, thanks! Just a Rake helper that fits my own personal style.
|