class Gem::Commands::GenerateIndexCommand

Generates a index files for use as a gem server.

See ‘gem help generate_index`

Public Class Methods

new() click to toggle source
Calls superclass method Gem::Command::new
# File lib/rubygems/commands/generate_index_command.rb, line 12
def initialize
  super "generate_index",
        "Generates the index files for a gem server directory",
        :directory => ".", :build_modern => true

  add_option "-d", "--directory=DIRNAME",
             "repository base dir containing gems subdir" do |dir, options|
    options[:directory] = File.expand_path dir
  end

  add_option "--[no-]modern",
             "Generate indexes for RubyGems",
             "(always true)" do |value, options|
    options[:build_modern] = value
  end

  deprecate_option("--modern", version: "4.0", extra_msg: "Modern indexes (specs, latest_specs, and prerelease_specs) are always generated, so this option is not needed.")
  deprecate_option("--no-modern", version: "4.0", extra_msg: "The `--no-modern` option is currently ignored. Modern indexes (specs, latest_specs, and prerelease_specs) are always generated.")

  add_option "--update",
             "Update modern indexes with gems added",
             "since the last update" do |value, options|
    options[:update] = value
  end
end

Public Instance Methods

execute() click to toggle source
# File lib/rubygems/commands/generate_index_command.rb, line 68
def execute
  # This is always true because it's the only way now.
  options[:build_modern] = true

  if !File.exist?(options[:directory]) ||
     !File.directory?(options[:directory])
    alert_error "unknown directory name #{options[:directory]}."
    terminate_interaction 1
  else
    indexer = Gem::Indexer.new options.delete(:directory), options

    if options[:update]
      indexer.update_index
    else
      indexer.generate_index
    end
  end
end