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.
#