class Gem::Commands::BuildCommand - Documentation for Ruby 4.0
Description: Documentation for the Gem::Commands::BuildCommand class
Keywords: ruby,class,Gem::Commands::BuildCommand

🔍

No recent searches

# class Gem::Commands::BuildCommand

### Public Class Methods

new ()
Source

    # File lib/rubygems/commands/build_command.rb, line 12
    def initialize
      super "build", "Build a gem from a gemspec"

      add_platform_option

      add_option "--force", "skip validation of the spec" do |_value, options|
        options[:force] = true
      end

      add_option "--strict", "consider warnings as errors when validating the spec" do |_value, options|
        options[:strict] = true
      end

      add_option "-o", "--output FILE", "output gem with the given filename" do |value, options|
        options[:output] = value
      end
    end

Calls superclass method `Gem::Command::new`

### Public Instance Methods

execute ()
Source

    # File lib/rubygems/commands/build_command.rb, line 62
    def execute
      if build_path = options[:build_path]
        Dir.chdir(build_path) { build_gem }
        return
      end

      build_gem
    end

### Private Instance Methods

build_gem ()
Source

    # File lib/rubygems/commands/build_command.rb, line 73
    def build_gem
      gemspec = resolve_gem_name

      if gemspec
        build_package(gemspec)
      else
        alert_error error_message
        terminate_interaction(1)
      end
    end

build_package (gemspec)
Source

    # File lib/rubygems/commands/build_command.rb, line 84
    def build_package(gemspec)
      spec = Gem::Specification.load(gemspec)
      if spec
        Gem::Package.build(
          spec,
          options[:force],
          options[:strict],
          options[:output]
        )
      else
        alert_error "Error loading gemspec. Aborting."
        terminate_interaction 1
      end
    end

error_message ()
Source

    # File lib/rubygems/commands/build_command.rb, line 109
    def error_message
      if gem_name
        "Couldn't find a gemspec file matching '#{gem_name}' in #{Dir.pwd}"
      else
        "Couldn't find a gemspec file in #{Dir.pwd}"
      end
    end

gem_name ()
Source

    # File lib/rubygems/commands/build_command.rb, line 117
    def gem_name
      get_one_optional_argument
    end

resolve_gem_name ()
Source

    # File lib/rubygems/commands/build_command.rb, line 99
    def resolve_gem_name
      return find_gemspec unless gem_name

      if File.exist?(gem_name)
        gem_name
      else
        find_gemspec("#{gem_name}.gemspec") || find_gemspec(gem_name)
      end
    end