Class: Gem::Commands::GenerateIndexCommand
- Inherits:
-
Gem::Command
- Object
- Gem::Command
- Gem::Commands::GenerateIndexCommand
- Defined in:
- lib/rubygems/commands/generate_index_command.rb
Overview
Generates a index files for use as a gem server.
See ‘gem help generate_index`
Instance Method Summary collapse
- #check_deprecated_options(options) ⇒ Object
-
#defaults_str ⇒ Object
:nodoc:.
- #deprecate_option(name, version: nil, extra_msg: nil) ⇒ Object
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
- #handle_options(args) ⇒ Object
-
#initialize ⇒ GenerateIndexCommand
constructor
A new instance of GenerateIndexCommand.
Constructor Details
#initialize ⇒ GenerateIndexCommand
Returns a new instance of GenerateIndexCommand.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# 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, :build_compact => true @deprecated_options = { "generate_index" => {} } unless defined?(@deprecated_options) add_option "-d", "--directory=DIRNAME", "repository base dir containing gems subdir" do |dir, | [:directory] = File. dir end add_option "--[no-]modern", "Generate indexes for RubyGems", "(always true)" do |value, | [: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 "--[no-]compact", "Generate compact index files" do |value, | [:build_compact] = value end add_option "--update", "Update modern and compact indices with gems added", "since the last update" do |value, | [:update] = value end end |
Instance Method Details
#check_deprecated_options(options) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 99 def () .each do |option| next unless option_is_deprecated?(option) deprecation = @deprecated_options[command][option] version_to_expire = deprecation["rg_version_to_expire"] deprecate_option_msg = if version_to_expire "The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}." else "The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems." end extra_msg = deprecation["extra_msg"] deprecate_option_msg += " #{extra_msg}" if extra_msg alert_warning(deprecate_option_msg) end end |
#defaults_str ⇒ Object
:nodoc:
45 46 47 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 45 def defaults_str # :nodoc: "--directory . --modern --compact" end |
#deprecate_option(name, version: nil, extra_msg: nil) ⇒ Object
95 96 97 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 95 def deprecate_option(name, version: nil, extra_msg: nil) @deprecated_options[command].merge!({ name => { "rg_version_to_expire" => version, "extra_msg" => extra_msg } }) end |
#description ⇒ Object
:nodoc:
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 49 def description # :nodoc: <<-EOF The generate_index command creates a set of indexes for serving gems statically. The command expects a 'gems' directory under the path given to the --directory option. The given directory will be the directory you serve as the gem repository. For `gem generate_index --directory /path/to/repo`, expose /path/to/repo via your HTTP server configuration (not /path/to/repo/gems). When done, it will generate a set of files like this: gems/*.gem # .gem files you want to # index specs.<version>.gz # specs index latest_specs.<version>.gz # latest specs index prerelease_specs.<version>.gz # prerelease specs index quick/Marshal.<version>/<gemname>.gemspec.rz # Marshal quick index file The .rz extension files are compressed with the inflate algorithm. The Marshal version number comes from ruby's Marshal::MAJOR_VERSION and Marshal::MINOR_VERSION constants. It is used to ensure compatibility. EOF end |
#execute ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 75 def execute # This is always true because it's the only way now. [:build_modern] = true if !File.exist?([:directory]) || !File.directory?([:directory]) alert_error "unknown directory name #{[:directory]}." terminate_interaction 1 else indexer = Gem::Indexer.new .delete(:directory), if [:update] indexer.update_index else indexer.generate_index end end end |
#handle_options(args) ⇒ Object
119 120 121 122 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 119 def (args) super (args) end |