lib/fog/bouncer/cli.rb in fog-bouncer-0.1.1 vs lib/fog/bouncer/cli.rb in fog-bouncer-0.2.0
- old
+ new
@@ -1,23 +1,81 @@
require "clamp"
-
require "fog/bouncer"
+require "scrolls"
module Fog
module Bouncer
module CLI
+ class Logger
+ def self.log(data, &block)
+ Scrolls.log(data, &block)
+ end
+ end
+
def self.run(*a)
MainCommand.run(*a)
end
class AbstractCommand < Clamp::Command
+ option "--aws-account-id", "AWS_ACCOUNT_ID", "AWS Account ID" do |id|
+ ENV['AWS_ACCOUNT_ID'] = id
+ end
+ option "--aws-access-key-id", "AWS_ACCESS_KEY_ID", "AWS Access Key ID" do |key|
+ ENV['AWS_ACCESS_KEY_ID'] = key
+ end
+ option "--aws-secret-access-key", "AWS_SECRET_ACCESS_KEY", "AWS Secret Access Key" do |key|
+ ENV['AWS_SECRET_ACCESS_KEY'] = key
+ end
+
+ option ["--confirm"], "CONFIRMATION", "Confirm dangerous action", :attribute_name => :confirmation
+
+ option ["--file", "-f"], "FILE", "Doorlist"
+
+ option ["--groups", "-g"], "GROUPS", "Comma separated list of groups", :default => [] do |groups|
+ Fog::Bouncer.specific_groups = groups.split(',')
+ end
+
+ option ["--pretend"], :flag, "Run in pretend mode" do
+ Fog::Bouncer.pretend!
+ end
+
option "--version", :flag, "show version" do
- puts "fog-bounder #{Fog::Bouncer::VERSION}"
+ puts "fog-bouncer #{Fog::Bouncer::VERSION}"
exit 0
end
+
+ def confirm
+ unless confirmation
+ puts
+ puts " ! WARNING: This action is not marked as being safe."
+ puts " ! To proceed, enter \"confirmation\" or re-run this command with --confirm confirmation"
+ puts
+ print "> "
+
+ confirmation = $stdin.gets.chomp
+ end
+
+ confirmation == "confirmation" || raise("Confirmation failed")
+ end
+
+ def file
+ if @file && File.exists?(File.expand_path(@file))
+ File.expand_path(@file)
+ elsif File.exists?(File.expand_path("Doorlist"))
+ File.expand_path("Doorlist")
+ else
+ raise("Doorlist not found")
+ end
+ end
end
+ require "fog/bouncer/cli/diff"
+
class MainCommand < AbstractCommand
+ subcommand "diff", "Generate a diff between local and remote", DiffCommand
end
end
end
end
+
+Scrolls::Log.start(STDOUT)
+Fog::Bouncer.instrument_with(Fog::Bouncer::CLI::Logger.method(:log))