hen 0.4.4 → 0.4.5

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/ChangeLog CHANGED
@@ -1,5 +1,12 @@
1
1
  = Revision history for hen
2
2
 
3
+ == 0.4.5 [2012-01-20]
4
+
5
+ * Publish native Gems.
6
+ * Build and publish Meta-Gems.
7
+ * Renamed Meta-Gem option 'extras' to 'dependencies'.
8
+ * Fixed Ruby warnings.
9
+
3
10
  == 0.4.4 [2012-01-18]
4
11
 
5
12
  * Some extension task improvements.
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to hen version 0.4.4
5
+ This documentation refers to hen version 0.4.5
6
6
 
7
7
 
8
8
  == DESCRIPTION
data/bin/hen CHANGED
@@ -57,7 +57,7 @@ abort USAGE if ARGV.empty?
57
57
 
58
58
  EXAMPLE = File.expand_path('../../example', __FILE__)
59
59
 
60
- case action = ARGV.shift
60
+ case arg = ARGV.shift
61
61
  when 'help', '-h', '--help'
62
62
  puts USAGE
63
63
  puts
@@ -173,5 +173,5 @@ case action = ARGV.shift
173
173
  # a particular hen/task is currently available).
174
174
  abort 'Sorry, not yet available...'
175
175
  else
176
- abort "Illegal action: #{action}\n#{USAGE}"
176
+ abort "Illegal action: #{arg}\n#{USAGE}"
177
177
  end
@@ -3,7 +3,7 @@
3
3
  # #
4
4
  # hen -- Just a Rake helper #
5
5
  # #
6
- # Copyright (C) 2007-2011 University of Cologne, #
6
+ # Copyright (C) 2007-2012 University of Cologne, #
7
7
  # Albertus-Magnus-Platz, #
8
8
  # 50923 Cologne, Germany #
9
9
  # #
@@ -26,7 +26,6 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
- require 'hen'
30
29
  require 'etc'
31
30
  require 'erb'
32
31
  require 'highline/import'
@@ -3,7 +3,7 @@
3
3
  # #
4
4
  # A component of hen, the Rake helper. #
5
5
  # #
6
- # Copyright (C) 2007-2011 University of Cologne, #
6
+ # Copyright (C) 2007-2012 University of Cologne, #
7
7
  # Albertus-Magnus-Platz, #
8
8
  # 50923 Cologne, Germany #
9
9
  # #
@@ -26,8 +26,8 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
- require 'hen'
30
29
  require 'nuggets/file/which'
30
+ require 'nuggets/object/singleton_class'
31
31
 
32
32
  class Hen
33
33
 
@@ -323,7 +323,7 @@ class Hen
323
323
  def extend_object(object, *blocks)
324
324
  blocks << Proc.new if block_given?
325
325
 
326
- singleton_class = class << object; self; end
326
+ singleton_class = object.singleton_class
327
327
 
328
328
  blocks.compact.reverse_each { |block|
329
329
  singleton_class.class_eval(&block)
@@ -4,7 +4,7 @@ class Hen
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 4
7
- TINY = 4
7
+ TINY = 5
8
8
 
9
9
  class << self
10
10
 
@@ -41,7 +41,7 @@ Hen :gem => :rdoc do
41
41
 
42
42
  extension_options = gem_options.delete(:extension) || {}
43
43
 
44
- meta_gems = Array(gem_options.delete(:meta))
44
+ meta_gems, meta_gem_specs = Array(gem_options.delete(:meta)), []
45
45
 
46
46
  gem_name = gem_options[:name] ||= project_name(rf_config)
47
47
  abort 'Gem name missing' unless gem_name
@@ -165,7 +165,7 @@ Hen :gem => :rdoc do
165
165
 
166
166
  noauto = meta_gem_options.delete(:noauto)
167
167
 
168
- meta_gem_spec = Gem::Specification.new { |spec|
168
+ meta_gem_specs << meta_gem_spec = Gem::Specification.new { |spec|
169
169
 
170
170
  ### inherit from original spec
171
171
 
@@ -189,7 +189,7 @@ Hen :gem => :rdoc do
189
189
 
190
190
  [
191
191
  [gem_options[:name], gem_options[:version]],
192
- *Array(meta_gem_options.delete(:extras))
192
+ *Array(meta_gem_options.delete(:dependencies))
193
193
  ].each { |dependency|
194
194
  spec.add_dependency(*dependency)
195
195
  }
@@ -201,6 +201,10 @@ Hen :gem => :rdoc do
201
201
  }
202
202
 
203
203
  meta_prefix = "gem:meta:#{meta_gem_name = meta_gem_spec.name}"
204
+ meta_class = meta_gem_spec.singleton_class
205
+
206
+ meta_class.send(:define_method, :auto?) { !noauto }
207
+ meta_class.send(:define_method, :taskname) { meta_prefix }
204
208
 
205
209
  desc "Display the #{meta_gem_name} gem specification"
206
210
  task "#{meta_prefix}:spec" do
@@ -229,6 +233,31 @@ Hen :gem => :rdoc do
229
233
  end
230
234
  }
231
235
 
236
+ meta_gem_specs.each { |meta_gem_spec|
237
+
238
+ meta_pkg_task = gem_klass.new(meta_gem_spec)
239
+
240
+ taskname = meta_gem_spec.taskname
241
+
242
+ gem_file = File.basename(meta_gem_spec.cache_file)
243
+ gem_path = File.join(package_dir = meta_pkg_task.package_dir, gem_file)
244
+
245
+ desc "Build the meta gem file #{gem_file}"
246
+ task taskname => gem_path
247
+
248
+ Gem.configuration.verbose = trace = Rake.application.options.trace
249
+
250
+ file gem_path => package_dir do
251
+ when_writing "Creating #{meta_gem_spec.file_name}" do
252
+ Gem::Builder.new(meta_gem_spec).build
253
+ verbose(trace) { mv gem_file, package_dir }
254
+ end
255
+ end
256
+
257
+ %w[package gem].each { |t| task t => taskname } if meta_gem_spec.auto?
258
+
259
+ }
260
+
232
261
  begin
233
262
  require 'rake/extensiontask' unless gem_spec.extensions.empty?
234
263
  rescue LoadError
@@ -255,7 +284,7 @@ Hen :gem => :rdoc do
255
284
  ENV['RUBY_CC_VERSION'] ||= Array(ruby_versions).join(':')
256
285
  end
257
286
 
258
- Rake::ExtensionTask.new(nil, gem_spec) { |ext|
287
+ extension_task = Rake::ExtensionTask.new(nil, gem_spec) { |ext|
259
288
  set_options(ext, extension_options, 'Extension')
260
289
  }
261
290
 
@@ -270,7 +299,8 @@ Hen :gem => :rdoc do
270
299
 
271
300
  rubygems do |rg_pool|
272
301
 
273
- gem_path = File.join(pkg_task.package_dir, gem_spec.file_name)
302
+ gem_base = pkg_task.package_dir
303
+ gem_path = File.join(gem_base, gem_spec.file_name)
274
304
 
275
305
  desc 'Create the gem and install it'
276
306
  task 'gem:install' => :gem do
@@ -282,12 +312,43 @@ Hen :gem => :rdoc do
282
312
  rg_pool.call.push(gem_path)
283
313
  end
284
314
 
315
+ meta_gem_specs.each { |meta_gem_spec|
316
+ taskname = meta_gem_spec.taskname
317
+
318
+ desc "Create the meta gem #{meta_gem_spec.name} and upload it to RubyGems.org"
319
+ task "#{taskname}:push" => taskname do
320
+ rg_pool.call.push(File.join(gem_base, meta_gem_spec.file_name))
321
+ end
322
+
323
+ task 'gem:push:meta' => "#{taskname}:push" if meta_gem_spec.auto?
324
+ }
325
+
326
+ if have_task?('gem:push:meta')
327
+ desc 'Create the meta gems and upload them to RubyGems.org'
328
+ task 'gem:push:meta'
329
+
330
+ task 'gem:push' => 'gem:push:meta'
331
+ end
332
+
333
+ if extension_task
334
+ platforms = Array(extension_task.cross_platform).join(',')
335
+ gems_glob = gem_path.sub(/(?=\.gem\z)/, "-{#{platforms}}")
336
+
337
+ desc 'Create the native gems and upload them to RubyGems.org'
338
+ task 'gem:push:native' => 'gem:native' do
339
+ rg = rg_pool.call
340
+ Dir[gems_glob].each { |native_gem| rg.push(native_gem) }
341
+ end
342
+
343
+ task 'gem:push' => 'gem:push:native'
344
+ end
345
+
285
346
  desc release_desc; release_desc = nil
286
347
  task :release => 'gem:push'
287
348
 
288
349
  end
289
350
 
290
- rubyforge do |rf_config, rf_pool|
351
+ rubyforge do |_, rf_pool|
291
352
 
292
353
  desc 'Package and upload the release to RubyForge'
293
354
  task 'release:rubyforge' => [:package, 'doc:publish:rubyforge'] do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hen
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 4
10
- version: 0.4.4
9
+ - 5
10
+ version: 0.4.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jens Wille
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-18 00:00:00 Z
18
+ date: 2012-01-20 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: ruby-nuggets
@@ -85,14 +85,14 @@ licenses: []
85
85
 
86
86
  post_install_message:
87
87
  rdoc_options:
88
- - --charset
89
- - UTF-8
90
- - --title
91
- - hen Application documentation (v0.4.4)
88
+ - --line-numbers
92
89
  - --main
93
90
  - README
94
91
  - --all
95
- - --line-numbers
92
+ - --charset
93
+ - UTF-8
94
+ - --title
95
+ - hen Application documentation (v0.4.5)
96
96
  require_paths:
97
97
  - lib
98
98
  required_ruby_version: !ruby/object:Gem::Requirement