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 Attribute Summary
Attributes inherited from Gem::Command
#command, #defaults, #options, #program_name, #summary
Instance Method Summary collapse
-
#defaults_str ⇒ Object
:nodoc:.
-
#description ⇒ Object
:nodoc:.
- #execute ⇒ Object
-
#initialize ⇒ GenerateIndexCommand
constructor
A new instance of GenerateIndexCommand.
Methods inherited from Gem::Command
add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #arguments, #begins?, build_args, build_args=, common_options, extra_args, extra_args=, #get_all_gem_names, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #usage, #when_invoked
Methods included from UserInteraction
#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction
Methods included from DefaultUserInteraction
ui, #ui, ui=, #ui=, use_ui, #use_ui
Constructor Details
#initialize ⇒ GenerateIndexCommand
Returns a new instance of GenerateIndexCommand.
11 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 11 def initialize super 'generate_index', 'Generates the index files for a gem server directory', :directory => '.', :build_legacy => true, :build_modern => true add_option '-d', '--directory=DIRNAME', 'repository base dir containing gems subdir' do |dir, | [:directory] = File. dir end add_option '--[no-]legacy', 'Generate Marshal.4.8' do |value, | unless [:build_modern] or value then raise OptionParser::InvalidOption, 'no indicies will be built' end [:build_legacy] = value end add_option '--[no-]modern', 'Generate indexes for RubyGems newer', 'than 1.2.0' do |value, | unless [:build_legacy] or value then raise OptionParser::InvalidOption, 'no indicies will be built' end [:build_modern] = value end add_option '--update', 'Update modern indexes with gems added', 'since the last update' do |value, | [:update] = value end add_option :RSS, '--rss-gems-host=GEM_HOST', 'Host name where gems are served from,', 'used for GUID and enclosure values' do |value, | [:rss_gems_host] = value end add_option :RSS, '--rss-host=HOST', 'Host name for more gems information,', 'used for RSS feed link' do |value, | [:rss_host] = value end add_option :RSS, '--rss-title=TITLE', 'Set title for RSS feed' do |value, | [:rss_title] = value end end |
Instance Method Details
#defaults_str ⇒ Object
:nodoc:
64 65 66 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 64 def defaults_str # :nodoc: "--directory . --legacy --modern" end |
#description ⇒ Object
:nodoc:
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 68 def description # :nodoc: "The generate_index command creates a set of indexes for serving gems\nstatically. The command expects a 'gems' directory under the path given to\nthe --directory option. The given directory will be the directory you serve\nas the gem repository.\n\nFor `gem generate_index --directory /path/to/repo`, expose /path/to/repo via\nyour HTTP server configuration (not /path/to/repo/gems).\n\nWhen done, it will generate a set of files like this:\n\ngems/*.gem # .gem files you want to\n # index\n\nspecs.<version>.gz # specs index\nlatest_specs.<version>.gz # latest specs index\nprerelease_specs.<version>.gz # prerelease specs index\nquick/Marshal.<version>/<gemname>.gemspec.rz # Marshal quick index file\n\n# these files support legacy RubyGems\nMarshal.<version>\nMarshal.<version>.Z # Marshal full index\n\nThe .Z and .rz extension files are compressed with the inflate algorithm.\nThe Marshal version number comes from ruby's Marshal::MAJOR_VERSION and\nMarshal::MINOR_VERSION constants. It is used to ensure compatibility.\n\nIf --rss-host and --rss-gem-host are given an RSS feed will be generated at\nindex.rss containing gems released in the last two days.\n EOF\nend\n" |
#execute ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/rubygems/commands/generate_index_command.rb', line 101 def execute if [:update] and ([:rss_host] or [:rss_gems_host]) then alert_error '--update not compatible with RSS generation' terminate_interaction 1 end if not File.exist?([:directory]) or not File.directory?([:directory]) then alert_error "unknown directory name #{directory}." terminate_interaction 1 else indexer = Gem::Indexer.new .delete(:directory), if [:update] then indexer.update_index else indexer.generate_index end end end |