# Hookin -- minimalist Ruby package manager # Copyright (C) 2008 Christian Neukirchen # # Hookin is freely distributable under the terms of an MIT-style license. # See COPYING or http://www.opensource.org/licenses/mit-license.php. $HOOKIN_DB = nil $HOOKIN_FILE = nil def __hookin_require(lib) unless $HOOKIN_DB begin $HOOKIN_FILE = [ENV["HOOKINDB"], "hookin.db", File.expand_path("~/.hookin.db"), *$LOAD_PATH.map { |path| File.join(path, "hookin.db") } ].find { |f| f && File.exist?(f) } $HOOKIN_FILE ||= File.expand_path("~/.hookin.db") File.open($HOOKIN_FILE) { |db| $HOOKIN_DB = Marshal.load(db) } rescue Errno::ENOENT $HOOKIN_DB = {} end end if record = $HOOKIN_DB[lib] __pre_hookin_require "#{record[0]}/#{lib}" else __pre_hookin_require lib end end module Kernel alias __pre_hookin_require require alias require __hookin_require end