#require 'rdoc/usage' #require 'getoptlong' # add options as needed #opts = GetoptLong.new( # [ '--help', '-h', GetoptLong::NO_ARGUMENT ]) # opts.each do |opt, arg| # case opt # when '--help' then nil # end # end lib_dir = File.join( File.dirname(__FILE__), "../lib/") require lib_dir + "tap.rb" # configure the app to app.yml if it exists if File.exists?("app.yml") config = ERB.new( File.read("app.yml") ).result config = YAML.load(config) Tap::App.instance.reconfigure(config) if config end begin command = ARGV.shift case command when "help", "?", nil puts "usage: tap [options] [args]" puts "available commands:" commands = Tap::App.instance.glob(:script).collect do |script| next unless File.extname(script) == ".rb" Tap::App.instance.relative_filepath(:script, script).chomp(".rb") end Tap::App.glob(lib_dir + "tap/script/**/*").each do |script| next unless File.extname(script) == ".rb" command = Tap::App.relative_filepath(lib_dir + "tap/script", script).chomp(".rb") commands << command unless commands.include?(command) end print " " puts commands.sort.join("\n ") puts else app_script_filepath = Tap::App.instance.filepath(:script, command + ".rb") tap_script_filepath = lib_dir + "tap/script/#{command}.rb" if File.exists?(app_script_filepath) load app_script_filepath elsif File.exists?(tap_script_filepath) load tap_script_filepath else raise "Unknown command: '#{command}'" end end rescue if Tap::App.instance.options.debug raise else puts $!.message puts "Type 'tap help' for usage information." end end