# 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