hen 0.4.9 → 0.5.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.
- 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.
|