class Gem::Commands::BuildCommand

Public Class Methods

new() click to toggle source
# File lib/rubygems/commands/build_command.rb, line 6
def initialize
  super('build', 'Build a gem from a gemspec')
end

Public Instance Methods

execute() click to toggle source
# File lib/rubygems/commands/build_command.rb, line 18
def execute
  gemspec = get_one_gem_name

  if File.exist? gemspec
    spec = load_gemspec gemspec

    if spec then
      Gem::Builder.new(spec).build
    else
      alert_error "Error loading gemspec. Aborting."
      terminate_interaction 1
    end
  else
    alert_error "Gemspec file not found: #{gemspec}"
    terminate_interaction 1
  end
end
load_gemspec(filename) click to toggle source
# File lib/rubygems/commands/build_command.rb, line 36
def load_gemspec filename
  if yaml?(filename)
    open(filename) do |f|
      begin
        Gem::Specification.from_yaml(f)
      rescue Gem::EndOfYAMLException
        nil
      end
    end
  else
    Gem::Specification.load(filename) # can return nil
  end
end
yaml?(filename) click to toggle source
# File lib/rubygems/commands/build_command.rb, line 50
def yaml?(filename)
  line = open(filename) { |f| line = f.gets }
  result = line =~ %r{!ruby/object:Gem::Specification}
  result
end