def perform!
$command = args.shift
command_class = Compass::Commands[$command]
unless command_class
args.unshift($command)
$command = "help"
command_class = Compass::Commands::Default
end
@options = if command_class.respond_to?("parse_#{$command}!")
command_class.send("parse_#{$command}!", args)
else
command_class.parse!(args)
end
cmd = command_class.new(Dir.getwd, @options)
cmd.execute
cmd.successful? ? 0 : 1
rescue OptionParser::ParseError => e
puts "Error: #{e.message}"
puts command_class.usage if command_class.respond_to?(:usage)
end