#!/usr/bin/ruby # = Rudy S3 # # === A Rudy interface to Amazon Simple Storage Service # # # # See rudy-s3 -h for usage # $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') # Put our local lib in first place #require 'rubygems' require 'rudy' require 'rudy/cli' require 'drydock' # Command-line interface for bin/rudy-s3 module RudyCLI_S3 extend Drydock # ------------------------------------ AMAZON S3 COMMANDS -------- # ------------------------------------------------------------------ about "Amazon S3 Buckets" usage "rudy-s3 buckets" option :l, :location, String, "Specify a bucket location. One of: us, eu" action :C, :create, "Create a bucket" action :D, :destroy, "Destroy a bucket" argv :name command :buckets => Rudy::CLI::AWS::S3::Buckets command_alias :buckets, :b #about "Amazon S3 Storage Interface" #usage "rudy-s3 store file-path" #option :b, :bucket, String, "Bucket name" #argv :path #command :store => Rudy::CLI::AWS::S3::Store #command_alias :store, :s # --------------------------------- RUDY-S3 MISCELLANEOUS -------- # ------------------------------------------------------------------ default :buckets debug :off end #puts Rudy::Utils.banner("THIS IS RUBY #{RUBY_VERSION}") if Drydock.debug? # We call Drydock specifically otherwise it will run at_exit. Rye also # uses at_exit for shutting down the ssh-agent. Ruby executes at_exit # blocks in reverse order so if Drydock is required first, it's block # will run after Rye shuts down the ssh-agent. begin Drydock.run!(ARGV, STDIN) if Drydock.run? && !Drydock.has_run? rescue Drydock::ArgError, Drydock::OptError => ex STDERR.puts ex.message STDERR.puts ex.usage rescue Drydock::InvalidArgument => ex STDERR.puts ex.message rescue Rudy::Error => ex STDERR.puts ex.message STDERR.puts ex.backtrace if Drydock.debug? rescue => ex STDERR.puts "ERROR (#{ex.class.to_s}): #{ex.message}" STDERR.puts ex.backtrace if Drydock.debug? rescue Interrupt puts "#{$/}Exiting... " exit 1 rescue SystemExit # Don't balk end