home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ruby164.zip / rbemx164.zip / ruby / share / doc / optparse-0.8.2 / install.rb < prev    next >
Text File  |  2001-06-18  |  2KB  |  66 lines

  1. #!/usr/bin/ruby
  2. Copyright = %$Copyleft: (c) 2001 Nakada.Nobuyoshi <nobu.nokada@softhome.net> $.freeze
  3. RCSID = %w$Id: install.rb,v 0.6 2001/04/08 09:13:46 nobu Exp $[1..-1].each {|s| s.freeze}.freeze
  4. Version = RCSID[1].split('.').collect {|s| s.to_i}.extend(Comparable).freeze
  5. Release = RCSID[2]
  6.  
  7. srcdir = File.dirname(__FILE__)
  8. $:.unshift(srcdir)
  9. require 'optparse'
  10. require 'rbconfig'
  11. require 'ftools'
  12.  
  13. ARGV.options {|q|
  14.   @exec = true
  15.   @verbose = true
  16.   @more = true
  17.   q.banner = "Usage: ruby #{q.program_name} [OPTIONS] [more]\n"
  18.   q.summary_width = 44
  19.   q.on('--site-install', '--default', 'install to site_ruby') {@dest = nil}
  20.   q.on('--more-install', 'install some more files') {|@more|}
  21.   q.on('-l', '--less', 'not install optional files') {@more = false}
  22.   q.on('-C', '--destdir=DIR', '--destination-directory', String, 'install to DIR') {|@dest|}
  23.   q.on('-q', '--no-verbose', '--[no-]quiet', 'run verbosely/quietly') {|@verbose|}
  24.   q.on('-n', '--no-install', '--show-only', FalseClass, 'show settings and exit') {|@exec|}
  25.   q.order! do |nonopt|
  26.     begin
  27.       q.parse("--#{nonopt}")
  28.     rescue OptionParser::InvalidOption
  29.       raise OptionParser::InvalidArgument, nonopt if @dest
  30.       @dest = nonopt
  31.     end
  32.   end
  33. } or (puts ARGV.options; exit 1)
  34.  
  35. if @exec
  36.   def makedirs(d)
  37.     File.makedirs(d, @verbose)
  38.   end
  39.   def install(src, dest, mode = 0644)
  40.     File.install(src, dest, mode, @verbose)
  41.   end
  42. else
  43.   def makedirs(d)
  44.     puts("install -d #{d}")
  45.   end
  46.   def install(src, dest, mode = 0644)
  47.     printf("install -m %o %s %s\n", mode, src, dest)
  48.   end
  49. end
  50.  
  51. @dest ||= Config::CONFIG['sitedir']
  52. if srcdir == '.'
  53.   srcdir = ''
  54. else
  55.   srcdir.sub!(/[^\/]\z/, '\&/')
  56. end
  57. files = ["#{srcdir}optparse.rb"]
  58. files.concat(Dir.glob("#{srcdir}optparse/**/*.rb")) if @more
  59.  
  60. dirs = {}
  61. files.each do |f|
  62.   dest = File.join(@dest, f[srcdir.length..-1])
  63.   dirs[d = File.dirname(dest)] ||= (makedirs(d); true)
  64.   install(f, dest)
  65. end
  66.