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: <<-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 # these files support legacy RubyGems Marshal.<version> Marshal.<version>.Z # Marshal full index The .Z and .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. If --rss-host and --rss-gem-host are given an RSS feed will be generated at index.rss containing gems released in the last two days. EOF end |
#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 |