diff --git a/lib/kamaze/project/tasks/gem/push.rb b/lib/kamaze/project/tasks/gem/push.rb index c08a14f9..dec04dbf 100644 --- a/lib/kamaze/project/tasks/gem/push.rb +++ b/lib/kamaze/project/tasks/gem/push.rb @@ -6,22 +6,21 @@ # This is free software: you are free to change and redistribute it. # There is NO WARRANTY, to the extent permitted by law. -[nil, :gem_runner, :exceptions].each do |req| - require "rubygems/#{req}".rstrip('/') -end - -# Code mostly based on gem executable -# -# @see http://guides.rubygems.org/publishing/ -# @see rubygems-tasks -builder = tools.fetch(:gemspec_builder) -desc 'Push gem up to the gem server' -task 'gem:push': [builder.buildable] do - args = [:push, builder.buildable].map(&:to_s) +[nil, :gem_runner, :exceptions].each { |req| require ['rubygems', req].compact.join('/') } - begin - Gem::GemRunner.new.run(args.map(&:to_s)) - rescue Gem::SystemExitException => e - exit(e.exit_code) +tools.fetch(:gemspec_builder).tap do |builder| + # Code mostly based on gem executable + # + # @see http://guides.rubygems.org/publishing/ + # @see rubygems-tasks + runner = lambda do + [:push, builder.buildable].map(&:to_s).yield_self do |args| + Gem::GemRunner.new.run(args.map(&:to_s)) + rescue Gem::SystemExitException => e + exit(e.exit_code) + end end + + desc 'Push gem up to the gem server' + task('gem:push': [builder.buildable]) { runner.call } end