lib/ronin/ui/cli/commands/gen.rb in ronin-gen-1.1.1 vs lib/ronin/ui/cli/commands/gen.rb in ronin-gen-1.2.0.rc1

- old
+ new

@@ -16,32 +16,57 @@ # You should have received a copy of the GNU General Public License # along with Ronin Gen. If not, see <http://www.gnu.org/licenses/>. # require 'ronin/ui/cli/command' +require 'ronin/gen/file_generator' +require 'ronin/gen/dir_generator' require 'ronin/gen/gen' require 'ronin/gen/version' require 'parameters/options' module Ronin module UI module CLI module Commands # - # The `ronin-gen` command. + # Runs or lists available generators. # + # ## Usage + # + # ronin-gen [[options] | GENERATOR [generator-options]] + # + # ## Options + # + # -v, --[no-]verbose Enable verbose output. + # -q, --[no-]quiet Disable verbose output. + # --[no-]silent Silence all output. + # --[no-]color Enables color output. + # Default: true + # -V, --[no-]version Prints the ronin-gen version. + # + # ## Examples + # + # ronin-gen repository myrepo --git + # ronin-gen library ronin-pwn + # class Gen < Command - summary "Prints the list of available generators" + summary "Runs or lists available generators" - usage '[options] | GENERATOR [generator-options]' + usage '[[options] | GENERATOR [generator-options]]' option :version, :type => true, :flag => '-V', :description => 'Prints the ronin-gen version' + examples [ + "ronin-gen repository myrepo --git", + "ronin-gen library ronin-pwn" + ] + # # Starts the `ronin-gen` command. # # @param [Array<String>] argv # The arguments for the command. @@ -49,20 +74,44 @@ def start(argv=ARGV) if (argv.empty? || argv.first.start_with?('-')) return super(argv) end - generator_name = argv.shift - generator = Ronin::Gen.generator(generator_name).new + generator_name = argv.shift + generator = Ronin::Gen.generator(generator_name).new - opts = Parameters::Options.parser(generator) do |opts| - opts.banner = "ronin-gen #{generator_name} PATH [options]" - end + case generator + when Ronin::Gen::FileGenerator, Ronin::Gen::DirGenerator + opts = Parameters::Options.parser(generator) do |opts| + opts.banner = "ronin-gen #{generator_name} PATH [options]" + end - args = opts.parse(argv) + args = opts.parse(argv) - generator.path = args.first - generator.generate! + if args.empty? + print_error "Must specify a PATH argument" + exit -1 + end + + generator.path = args.first + else + opts = Parameters::Options.parser(generator) do |opts| + opts.banner = "ronin-gen #{generator_name} [options]" + end + + args = opts.parse(argv) + end + + begin + generator.generate! + rescue Parameters::MissingParam => error + print_error error + print_error "Please see `ronin-gen #{generator_name} --help`" + exit -1 + rescue => error + print_exception error + exit -1 + end end # # Lists the available generators. #