lib/guignol/shell.rb in guignol-0.1.2.1 vs lib/guignol/shell.rb in guignol-0.3.0

- old
+ new

@@ -1,50 +1,35 @@ -# Copyright (c) 2012, HouseTrip SA. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the authors. +require 'thor' -require 'term/ansicolor' -require 'guignol/commands' - module Guignol - class Shell - include Singleton + class Shell < Thor + def help(*args) + shell.say + shell.say "Guignol -- manipulate EC2 instances from your command line.", :cyan + shell.say + super + end - def execute(command_name, *argv) - command_name ||= 'help' - unless command = Commands::Map[command_name] - Commands::Help.new.run - die "no such command '#{command_name}'." - end - command.new(*argv).run - exit 0 + def self.start + super(ARGV, :shell => shared_shell) end - def die(message) - puts Term::ANSIColor.red("fatal: #{message}") - exit 1 + def self.shared_shell + @shared_shell ||= Thor::Base.shell.new end + + def self.exit_on_failure? + true + end end end + + +require 'guignol/commands/create' +require 'guignol/commands/kill' +require 'guignol/commands/start' +require 'guignol/commands/stop' +require 'guignol/commands/list' +require 'guignol/commands/uuid' +require 'guignol/commands/fix_dns' +require 'guignol/commands/clone' +require 'guignol/commands/execute'