Module: Ramaze::Bin::Runner
- Defined in:
- lib/ramaze/bin/runner.rb
Overview
Module used for running a particular command based on the specified command line arguments.
Usage:
ramaze --help # Shows a help message
ramaze -h # Shows a help message as well
ramaze -v # Shows the version of Ramaze
ramaze [COMMAND] # Runs [COMMAND]
Constant Summary collapse
- Commands =
{ :create => Ramaze::Bin::Create, }
- Banner =
<<-TXT.strip Ramaze is a simple, light and modular open-source web application framework written in Ruby. Usage: ramaze [COMMAND] [OPTIONS] Example: ramaze create blog TXT
Class Method Summary collapse
-
.commands_info ⇒ Array
Generates an array of “rows” where each row contains the name and description of a command.
-
.run(argv = ARGV) ⇒ Object
Runs a particular command based on the specified array.
Class Method Details
.commands_info ⇒ Array
Generates an array of “rows” where each row contains the name and description of a command. The descriptions of all commands are aligned based on the length of the longest command name.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/ramaze/bin/runner.rb', line 101 def self.commands_info cmds = [] longest = Commands.map { |name, klass| name.to_s }.sort[0].size Commands.each do |name, klass| name = name.to_s desc = '' # Try to extract the command description if klass.respond_to?(:const_defined?) \ and klass.const_defined?(:Description) desc = klass.const_get(:Description) end # Align the description based on the length of the name while name.size <= longest do name += ' ' end cmds.push(["#{name} #{desc}"]) end return cmds end |
.run(argv = ARGV) ⇒ Object
Runs a particular command based on the specified array.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/ramaze/bin/runner.rb', line 52 def self.run(argv=ARGV) op = OptionParser.new do |opt| opt. = Banner opt.summary_indent = ' ' opt.separator "\nCommands:\n #{commands_info.join("\n ")}" # Show all the common options opt.separator "\nOptions:\n" # Show the version of Ramaze opt.on('-v', '--version', 'Shows the version of Ramaze') do puts Ramaze::VERSION exit end opt.on('-h', '--help', 'Shows this help message') do puts op exit end end op.order!(argv) # Show a help message if no command has been specified if !argv[0] puts op.to_s exit end cmd = argv.delete_at(0).to_sym if Commands.key?(cmd) cmd = Commands[cmd].new cmd.run(argv) else abort 'The specified command is invalid' end end |