lib/guignol/commands/kill.rb in guignol-0.1.2.1 vs lib/guignol/commands/kill.rb in guignol-0.3.0
- old
+ new
@@ -1,48 +1,30 @@
-# 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 'guignol/commands/base'
-require 'guignol/instance'
+require 'guignol/models/instance'
+Guignol::Shell.class_eval do
+ desc 'kill PATTERNS', 'Terminate all instances matching PATTERNS'
+ def kill(*patterns)
+ if patterns.empty?
+ raise Thor::Error.new('You must specify at least one PATTERN.')
+ end
+ Guignol::Commands::Kill.new(patterns).run
+ end
+end
+
+
module Guignol::Commands
class Kill < Base
- def before_run
- return true if @configs.empty?
- names = @configs.map { |config| config[:name] }.join(", ")
- confirm "Are you sure you want to destroy servers #{names}"
- end
- def run_on_server(config)
- Guignol::Instance.new(config).destroy
+ def before_run(configs)
+ return true if configs.empty?
+ names = configs.keys.join(", ")
+ shell.yes? "Are you sure you want to destroy servers #{names}? [y/N]", :cyan
end
- def self.short_usage
- ["<regexps>", "Destroy instances (if they exist)"]
+ def run_on_server(instance, options = {})
+ instance.destroy
end
end
end