hen 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
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