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 66 67 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
|
# install.rb
#
# $Date: 2000/12/25 18:19:10 $
# Copyright (c) 2000 Masatoshi SEKI
#
# install.rb is copyrighted free software by Masatoshi SEKI.
# You can redistribute it and/or modify it under the same term as Ruby.
require 'rbconfig'
require 'find'
require 'ftools'
include Config
class Installer
protected
def install(from, to, mode = nil, verbose = false)
str = "install '#{from}' to '#{to}'"
str += ", mode=#{mode}" if mode
puts str if verbose
end
protected
def makedirs(*dirs)
for d in dirs
puts "mkdir #{d}"
end
end
def initialize(test=false)
@version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
@libdir = File.join(CONFIG["libdir"], "ruby", @version)
@sitelib = find_site_libdir
@ftools = (test) ? self : File
end
public
attr_reader(:libdir, :sitelib)
private
def find_site_libdir
site_libdir = $:.find {|x| x =~ /site_ruby$/}
if !site_libdir
site_libdir = File.join(@libdir, "site_ruby")
elsif site_libdir !~ Regexp.quote(@version)
site_libdir = File.join(site_libdir, @version)
end
site_libdir
end
public
def files_in_dir(dir)
list = []
Find.find(dir) do |f|
list.push(f)
end
list
end
public
def install_files(srcdir, files, destdir=@sitelib)
path = []
dir = []
for f in files
next if (f = f[srcdir.length+1..-1]) == nil
path.push f if File.ftype(File.join(srcdir, f)) == 'file'
dir |= [File.dirname(File.join(destdir, f))]
end
@ftools.makedirs(*dir)
for f in path
@ftools.install(File.join(srcdir, f), File.join(destdir, f), nil, true)
end
end
public
def install_rb
intall_files('lib', files_in_dir('lib'))
end
end
if __FILE__ == $0
inst = Installer.new(if ARGV[0] == '-n'
ARGV.shift
true
else
false
end)
if ARGV.size > 0
inst.install_files('.', ['./acl.rb'], ARGV.shift)
else
inst.install_files('.', ['./acl.rb'])
end
end
|