File: install.rb

package info (click to toggle)
liboptparse-ruby 0.8.4-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 428 kB
  • ctags: 644
  • sloc: ruby: 1,819; makefile: 47
file content (65 lines) | stat: -rw-r--r-- 1,928 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
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
64
65
#!/usr/bin/ruby
Copyright = %$Copyleft: (c) 2001 Nakada.Nobuyoshi <nobu.nokada@softhome.net> $.freeze
RCSID = %w$Id: install.rb,v 0.6 2001/04/08 09:13:46 nobu Exp $[1..-1].each {|s| s.freeze}.freeze
Version = RCSID[1].split('.').collect {|s| s.to_i}.extend(Comparable).freeze
Release = RCSID[2]

srcdir = File.dirname(__FILE__)
$:.unshift(srcdir)
require 'optparse'
require 'rbconfig'
require 'ftools'

ARGV.options {|q|
  @exec = true
  @verbose = true
  @more = true
  q.banner = "Usage: ruby #{q.program_name} [OPTIONS] [more]\n"
  q.summary_width = 44
  q.on('--site-install', '--default', 'install to site_ruby') {@dest = nil}
  q.on('--more-install', 'install some more files') {|@more|}
  q.on('-l', '--less', 'not install optional files') {@more = false}
  q.on('-C', '--destdir=DIR', '--destination-directory', String, 'install to DIR') {|@dest|}
  q.on('-q', '--no-verbose', '--[no-]quiet', 'run verbosely/quietly') {|@verbose|}
  q.on('-n', '--no-install', '--show-only', FalseClass, 'show settings and exit') {|@exec|}
  q.order! do |nonopt|
    begin
      q.parse("--#{nonopt}")
    rescue OptionParser::InvalidOption
      raise OptionParser::InvalidArgument, nonopt if @dest
      @dest = nonopt
    end
  end
} or (puts ARGV.options; exit 1)

if @exec
  def makedirs(d)
    File.makedirs(d, @verbose)
  end
  def install(src, dest, mode = 0644)
    File.install(src, dest, mode, @verbose)
  end
else
  def makedirs(d)
    puts("install -d #{d}")
  end
  def install(src, dest, mode = 0644)
    printf("install -m %o %s %s\n", mode, src, dest)
  end
end

@dest ||= Config::CONFIG['sitedir']
if srcdir == '.'
  srcdir = ''
else
  srcdir.sub!(/[^\/]\z/, '\&/')
end
files = ["#{srcdir}optparse.rb"]
files.concat(Dir.glob("#{srcdir}optparse/**/*.rb")) if @more

dirs = {}
files.each do |f|
  dest = File.join(@dest, f[srcdir.length..-1])
  dirs[d = File.dirname(dest)] ||= (makedirs(d); true)
  install(f, dest)
end