lib/ronin/ui/command_line/commands/install.rb in ronin-0.2.4 vs lib/ronin/ui/command_line/commands/install.rb in ronin-0.3.0

- old
+ new

@@ -1,9 +1,7 @@ # -#-- -# Ronin - A Ruby platform designed for information security and data -# exploration tasks. +# Ronin - A Ruby platform for exploit development and security research. # # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,11 +14,10 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -#++ # require 'ronin/ui/command_line/command' require 'ronin/platform/overlay' @@ -28,63 +25,41 @@ module UI module CommandLine module Commands class Install < Command - def defaults - @cache = nil - @media = nil - end + desc "install URI", "Installs the Overlay located at the specified URI" + method_option :cache, :type => :string, :aliases => '-C' + method_option :media, :type => :string, :aliases => '-m' + method_option :rsync, :type => :boolean + method_option :svn, :type => :boolean + method_option :hg, :type => :boolean + method_option :git, :type => :boolean - def define_options(opts) - opts.usage = 'URI [options]' - - opts.options do - opts.on('-C','--cache DIR','Specify an alternate overlay cache') do |dir| - @cache = dir - end - - opts.on('-m','--media MEDIA','Spedify the media-type of the overlay') do |media| - @media = media.to_sym - end - - opts.on('--rsync','Alias for -m rsync') do - @media = :rsync - end - - opts.on('--svn','Alias for -m svn') do - @media = :svn - end - - opts.on('--hg','Alias for -m hg') do - @media = :hg - end - - opts.on('--git','Alias for -m git') do - @media = :git - end + def default(uri) + if options[:cache] + Platform.load_overlays(options[:cache]) end - opts.arguments( - 'URI' => 'The URI of the overlay to install' - ) + media = if options[:media] + options[:media].to_sym + elsif options.rsync? + :rsync + elsif options.svn? + :svn + elsif options.hg? + :hg + elsif options.git? + :git + end - opts.summary %{ - Installs the overlay located at the specified URI - } - end - - def arguments(*args) - unless args.length == 1 - fail('only one overlay URI maybe specified') - end - - uri = args.first - - Platform.load_overlays(@cache) if @cache - - Platform.install(:uri => uri, :media => @media) do |overlay| - puts "Overlay #{overlay.name.dump} has been installed." + begin + Platform.install(:uri => uri, :media => media) do |overlay| + print_info "Overlay #{overlay.name.dump} has been installed." + end + rescue Platform::OverlayCached => e + print_error e.message + exit -1 end end end end