Class: LibGems::Commands::GenerateIndexCommand
- Inherits:
-
LibGems::Command
- Object
- LibGems::Command
- LibGems::Commands::GenerateIndexCommand
- Defined in:
- lib/libgems/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 LibGems::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 LibGems::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
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 63 |
# File 'lib/libgems/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 indexes for #{LibGems::NAME} older than", '1.2.0' 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 #{LibGems::NAME} 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:
65 66 67 |
# File 'lib/libgems/commands/generate_index_command.rb', line 65 def defaults_str # :nodoc: "--directory . --legacy --modern" end |
#description ⇒ Object
:nodoc:
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 100 101 102 103 104 105 106 107 108 |
# File 'lib/libgems/commands/generate_index_command.rb', line 69 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 \#{LibGems::NAME}\nquick/index\nquick/index.rz # quick index manifest\nquick/<gemname>.gemspec.rz # legacy YAML quick index\n # file\nMarshal.<version>\nMarshal.<version>.Z # Marshal full index\nyaml\nyaml.Z # legacy YAML 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.\nThe yaml indexes exist for legacy \#{LibGems::NAME} clients and fallback in case of\nMarshal version changes.\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
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/libgems/commands/generate_index_command.rb', line 110 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 = LibGems::Indexer.new .delete(:directory), if [:update] then indexer.update_index else indexer.generate_index end end end |