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