Sha256: f87e1a4330e29b89c2110cd9612a97ecb78b13340241989546db0a5be5dbe60c
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
#!/usr/bin/env ruby # Generate the yaml/yaml.Z index files for a gem server directory. # # Usage: generate_yaml_index.rb --dir DIR [--verbose] $:.unshift '~/rubygems' if File.exist? "~/rubygems" require 'optparse' require 'rubygems' require 'zlib' Gem.manage_gems class Indexer def initialize(options) @options = options @directory = options[:directory] end def gem_file_list Dir.glob(File.join(@directory, "gems", "*.gem")) end def build_index build_uncompressed_index build_compressed_index end def build_uncompressed_index puts "Building yaml file" if @options[:verbose] File.open(File.join(@directory, "yaml"), "w") do |file| file.puts "--- !ruby/object:Gem::Cache" file.puts "gems:" gem_file_list.each do |gemfile| spec = Gem::Format.from_file_by_path(gemfile).spec puts " ... adding #{spec.full_name}" if @options[:verbose] file.puts " #{spec.full_name}: #{spec.to_yaml.gsub(/\n/, "\n ")[4..-1]}" end end end def build_compressed_index puts "Building yaml.Z file" if @options[:verbose] File.open(File.join(@directory, "yaml.Z"), "w") do |file| file.write(Zlib::Deflate.deflate(File.read(File.join(@directory, "yaml")))) end end end options = { :directory => '.', :verbose => false, } ARGV.options do |opts| opts.on_tail("--help", "show this message") {puts opts; exit} opts.on('-d', '--dir=DIRNAME', "base directory containing gems subdirectory", String) do |value| options[:directory] = value end opts.on('-v', '--verbose', "show verbose output") do |value| options[:verbose] = value end opts.parse! end if options[:directory].nil? puts "Error, must specify directory name. Use --help" exit elsif ! File.exist?(options[:directory]) || ! File.directory?(options[:directory]) puts "Error, unknown directory name #{directory}." exit end Indexer.new(options).build_index
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubygems-update-0.8.10 | bin/generate_yaml_index.rb |
rubygems-update-0.8.11 | bin/generate_yaml_index.rb |