Module: Mongrel2::CLI
- Extended by:
- GLI::App, Loggability
- Defined in:
- lib/mongrel2/cli.rb
Overview
A tool for interacting with a Mongrel2 config database and server. This isn’t quite a replacement for the real m2sh yet; here’s what I have working so far:
[√] load Load a config.
[√] config Alias for load.
[-] shell Starts an interactive shell.
[√] access Prints the access log.
[√] servers Lists the servers in a config database.
[√] hosts Lists the hosts in a server.
[√] routes Lists the routes in a host.
[√] commit Adds a message to the log.
[√] log Prints the commit log.
[√] start Starts a server.
[√] stop Stops a server.
[√] reload Reloads a server.
[√] running Tells you what's running.
[-] control Connects to the control port.
[√] version Prints the Mongrel2 and m2sh version.
[√] help Get help, lists commands.
[-] uuid Prints out a randomly generated UUID.
I just use ‘uuidgen’ to generate uuids (which is all m2sh does, as well), so I don’t plan to implement that. The ‘control’ command is more-easily accessed via pry+Mongrel2::Control, so I’m not going to implement that, either. Everything else should be analagous to (or better than) the m2sh that comes with mongrel2. I implemented the ‘shell’ mode, but I found I never used it, and it introduced a dependency on the Termios library, so I removed it.
Defined Under Namespace
Modules: AccessCommand, BootstrapCommand, CommandUtilities, CommitCommand, HostsCommand, InitCommand, LoadCommand, LogCommand, QuickstartCommand, ReloadCommand, RoutesCommand, RunningCommand, ServersCommand, SettingsCommand, StartCommand, StopCommand, Subcommand
Instance Attribute Summary collapse
-
#subcommand_modules ⇒ Object
Registered subcommand modules.
Class Method Summary collapse
-
.add_registered_subcommands ⇒ Object
Add the commands from the registered subcommand modules.
-
.commands_from(subdir) ⇒ Object
Load commands from any files in the specified directory relative to LOAD_PATHs.
-
.pastel ⇒ Object
Return the Pastel colorizer.
-
.prompt ⇒ Object
Return the TTY prompt used by the command to communicate with the user.
-
.register_subcommands(mod) ⇒ Object
Add the specified module containing subcommands to the ‘mongrel2’ command.
-
.require_additional_libs(requires) ⇒ Object
Load any additional Ruby libraries given with the -r global option.
-
.reset_prompt ⇒ Object
Discard the existing HighLine prompt object if one existed.
-
.run ⇒ Object
Overridden – Add registered subcommands immediately before running.
-
.set_logging_level(level = nil) ⇒ Object
Set the global logging
level
if it’s defined. -
.setup_output(global) ⇒ Object
Set up the output levels and globals based on the associated
global
options. -
.setup_pastel_aliases ⇒ Object
Setup pastel color aliases.
Instance Attribute Details
#subcommand_modules ⇒ Object
Registered subcommand modules
150 151 152 |
# File 'lib/mongrel2/cli.rb', line 150 def subcommand_modules @subcommand_modules end |
Class Method Details
.add_registered_subcommands ⇒ Object
Add the commands from the registered subcommand modules.
170 171 172 173 174 175 176 177 178 |
# File 'lib/mongrel2/cli.rb', line 170 def self::add_registered_subcommands self.subcommand_modules ||= [] self.subcommand_modules.each do |mod| merged_commands = mod.commands.merge( self.commands ) self.commands.update( merged_commands ) command_objs = self.commands_declaration_order | self.commands.values self.commands_declaration_order.replace( command_objs ) end end |
.commands_from(subdir) ⇒ Object
Load commands from any files in the specified directory relative to LOAD_PATHs
486 487 488 489 490 491 |
# File 'lib/mongrel2/cli.rb', line 486 def self::commands_from( subdir ) Gem.find_latest_files( File.join(subdir, '*.rb') ).each do |rbfile| self.log.debug " loading %s..." % [ rbfile ] require( rbfile ) end end |
.pastel ⇒ Object
Return the Pastel colorizer.
183 184 185 |
# File 'lib/mongrel2/cli.rb', line 183 def self::pastel @pastel ||= Pastel.new( enabled: $stdout.tty? ) end |
.prompt ⇒ Object
Return the TTY prompt used by the command to communicate with the user.
190 191 192 |
# File 'lib/mongrel2/cli.rb', line 190 def self::prompt @prompt ||= TTY::Prompt.new( output: $stderr ) end |
.register_subcommands(mod) ⇒ Object
Add the specified module containing subcommands to the ‘mongrel2’ command.
161 162 163 164 165 166 |
# File 'lib/mongrel2/cli.rb', line 161 def self::register_subcommands( mod ) self.subcommand_modules ||= [] self.subcommand_modules.push( mod ) mod.extend( GLI::DSL, GLI::AppSupport, Loggability, CommandUtilities ) mod.log_to( :mongrel2 ) end |
.require_additional_libs(requires) ⇒ Object
Load any additional Ruby libraries given with the -r global option.
213 214 215 216 217 218 |
# File 'lib/mongrel2/cli.rb', line 213 def self::require_additional_libs( requires) requires.each do |path| path = "mongrel2/#{path}" unless path.start_with?( 'mongrel2/' ) require( path ) end end |
.reset_prompt ⇒ Object
Discard the existing HighLine prompt object if one existed. Mostly useful for testing.
197 198 199 |
# File 'lib/mongrel2/cli.rb', line 197 def self::reset_prompt @prompt = nil end |
.run ⇒ Object
Overridden – Add registered subcommands immediately before running.
154 155 156 157 |
# File 'lib/mongrel2/cli.rb', line 154 def self::run( * ) self.add_registered_subcommands super end |
.set_logging_level(level = nil) ⇒ Object
Set the global logging level
if it’s defined.
203 204 205 206 207 208 209 |
# File 'lib/mongrel2/cli.rb', line 203 def self::set_logging_level( level=nil ) if level Loggability.level = level.to_sym else Loggability.level = :fatal end end |
.setup_output(global) ⇒ Object
Set up the output levels and globals based on the associated global
options.
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
# File 'lib/mongrel2/cli.rb', line 235 def self::setup_output( global ) # Turn on Ruby debugging and/or verbosity if specified if global[:n] $DRYRUN = true Loggability.level = :warn else $DRYRUN = false end if global[:verbose] $VERBOSE = true Loggability.level = :info end if global[:debug] $DEBUG = true Loggability.level = :debug end if global[:loglevel] Loggability.level = global[:loglevel] end end |
.setup_pastel_aliases ⇒ Object
Setup pastel color aliases
223 224 225 226 227 228 229 230 231 |
# File 'lib/mongrel2/cli.rb', line 223 def self::setup_pastel_aliases self.pastel.alias_color( :headline, :bold, :white, :on_black ) self.pastel.alias_color( :header, :bold, :white ) self.pastel.alias_color( :success, :bold, :green ) self.pastel.alias_color( :error, :bold, :red ) self.pastel.alias_color( :key, :green ) self.pastel.alias_color( :even_row, :bold ) self.pastel.alias_color( :odd_row, :reset ) end |