class Gem::Commands::InaboxCommand

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/rubygems/commands/inabox_command.rb, line 16
def initialize
  super 'inabox', description

  add_option('-c', '--configure', "Configure GemInABox") do |value, options|
    options[:configure] = true
  end

  add_option('-g', '--host HOST', "Host to upload to.") do |value, options|
    options[:host] = value
  end

  add_option('-o', '--overwrite', "Overwrite Gem.") do |value, options|
    options[:overwrite] = true
  end

  add_option('-p', '--port', "Sets port") do |value, options|
    options[:port] = value
  end
end

Public Instance Methods

arguments() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 8
def arguments
  "GEM       built gem to push up"
end
config_path() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 70
def config_path
  File.join(Gem.user_home, '.gem', 'geminabox')
end
configure() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 74
def configure
  say "Enter the root url for your personal geminabox instance (e.g. http://gems/)."
  host = ask("Host:")
  self.geminabox_host = host
end
description() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 4
def description
  'Push a gem up to your GemInABox'
end
execute() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 41
def execute
  last_minute_requires!
  return configure if options[:configure]
  configure unless geminabox_host

  if options[:args].size == 0
    say "You didn't specify a gem, looking for one in . and in ./pkg/..."
    gemfiles = [GeminaboxClient::GemLocator.find_gem(Dir.pwd)]
  else
    gemfiles = get_all_gem_names
  end

  send_gems(gemfiles)
end
geminabox_host() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 80
def geminabox_host
  @geminabox_host ||= options[:host] || Gem.configuration.load_file(config_path)[:host]
end
geminabox_host=(host) click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 84
def geminabox_host=(host)
  config = Gem.configuration.load_file(config_path).merge(:host => host)

  dirname = File.dirname(config_path)
  Dir.mkdir(dirname) unless File.exists?(dirname)

  File.open(config_path, 'w') do |f|
    f.write config.to_yaml
  end
end
last_minute_requires!() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 36
def last_minute_requires!
  require 'yaml'
  require File.expand_path("../../../geminabox_client.rb", __FILE__)
end
send_gems(gemfiles) click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 56
def send_gems(gemfiles)
  client = GeminaboxClient.new(geminabox_host)

  gemfiles.each do |gemfile|
    say "Pushing #{File.basename(gemfile)} to #{client.url}..."
    begin
      say client.push(gemfile, options)
    rescue GeminaboxClient::Error => e
      alert_error e.message
      terminate_interaction(1)
    end
  end
end
usage() click to toggle source
# File lib/rubygems/commands/inabox_command.rb, line 12
def usage
  "#{program_name} GEM"
end