#!/usr/bin/ruby
#
# $Date: 2003-07-21 07:21:30 -0700 (Mon, 21 Jul 2003) $
# 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::new( 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(ARGV.shift == '-n')
inst.install_files('lib', ['lib/io/reactor.rb'])
end
syntax highlighted by Code2HTML, v. 0.9.1