summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/hoe/gemcutter.rb28
1 files changed, 23 insertions, 5 deletions
diff --git a/lib/hoe/gemcutter.rb b/lib/hoe/gemcutter.rb
index 08ccbb8..851d11c 100644
--- a/lib/hoe/gemcutter.rb
+++ b/lib/hoe/gemcutter.rb
@@ -1,8 +1,29 @@
require "rake"
+##
+# Gemcutter plugin for hoe.
+#
+# === Extra Configuration Options:
+#
+# otp_command:: Shell command to run to populate GEM_HOST_OTP_CODE.
+
module Hoe::Gemcutter
include Rake::DSL if defined?(Rake::DSL)
+ Hoe::DEFAULT_CONFIG["otp_command"] = false
+
+ def gem_push gems
+ with_config do |config, _|
+ otp_command = config["otp_command"]
+
+ ENV["GEM_HOST_OTP_CODE"] = `#{otp_command}`.chomp if otp_command
+ end
+
+ gems.each do |g|
+ sh Gem.ruby, "-S", "gem", "push", g
+ end
+ end
+
##
# Define release_to_gemcutter and attach it to the release task.
@@ -11,11 +32,8 @@ module Hoe::Gemcutter
task :release_to_gemcutter => [:clean, :package, :release_sanity] do
pkg = "pkg/#{spec.name}-#{spec.version}"
gems = Dir["#{pkg}*.gem"]
- gems.each do |g|
- # TODO - once gemcutter supports command invocation, use it.
- # We could still fail here due to --format executable
- sh Gem.ruby, "-S", "gem", "push", g
- end
+
+ gem_push gems
end
task :release_to => :release_to_gemcutter