#!/usr/bin/env ruby require 'getoptlong' require 'rbconfig' require 'reap/tasks' HELP1 = <<-HERE reap v#{::Reap::VERSION} USAGE: reap [options...] [arguments...] COMMANDS: help Displays this help information. template Copies the ProjectInfo template into the current directory, if it doesn't already exist. HERE HELP2 = <<-HERE OPTIONS: -v --verbose Provides extra verbose processing information. -u --use Use the specified configuration file rather than the default 'ProjectInfo'. -p --pretend (NOT YET IMPLEMENTED) Pretend, just to see what would happen, but don't actually do anything. --version Display the current version. --help Display this help information. HERE module Commands extend self DATA_DIR = 'site_ruby/reap' FILE_NAME = 'ProjectInfo' def version puts "%.2f" % [ Reap::Version ] end def help puts HELP1 #Reap::Task.registry.each do |t| # puts " #{t.task_name}" # puts " #{t.task_desc}\n\n" #end puts HELP2 end def tasks puts #Reap::Task.registry.each do |t| # puts " #{t.task_name}".ljust(20) + "#{t.task_desc}" #end puts end def template( file_name = ProjectInfo ) #dir = File.dirname(File.dirname(__FILE__)) dir = File.join( ::Config::CONFIG['datadir'], DATA_DIR ) tmpf = File.join( dir, 'template.yaml' ) unless File.file?( tmpf ) puts tmpf raise "Tempfile is missing." end if File.directory?(filename) puts "#{filename} a directory. Cannot comply." return elsif File.file?(filename) puts "#{filename} already exists." return end # copy tmpf to Reapfile FileUtils.cp( tmpf, filename ) puts "#{filename} created. You'll need to fill it out." end end # main cmd = nil opts = GetoptLong.new( [ "-v", "--verbose", GetoptLong::NO_ARGUMENT ], [ "-p", "--pretend", GetoptLong::NO_ARGUMENT ], [ "-d", "--debug", GetoptLong::NO_ARGUMENT ], [ "-u", "--use", GetoptLong::REQUIRED_ARGUMENT ], [ "--version", GetoptLong::NO_ARGUMENT ], [ "--help", GetoptLong::NO_ARGUMENT ] ) opts.each do |o, a| case o when '-v' $VERBOSE = true when '-p' $PRETEND = true when '-u' config = a when '-d' $DEBUG = true when '--help' cmd = 'help' when '--version' cmd = 'version' end end cmd = cmd || ARGV[0] args = ARGV[1..-1] config = nil cmd = cmd.downcase if cmd case cmd when nil,'help' Commands.help exit 0 when 'tasks' Commands.tasks exit 0 when 'version' Commands.version exit 0 when 'template' Commands.template end # Quick-build and run a task. c = cmd.downcase.to_s if ReapTask.respond_to?( "#{c}_task" ) rt = ReapTask.send("#{c}_task") { ARGV.slice(1..-1).join(' ') } rt.run else puts "Unknown command. Try 'reap help' for assitance." exit 0 end