Module: Webgen::CLI

Defined in:
lib/webgen/cli.rb,
lib/webgen/cli/utils.rb,
lib/webgen/cli/run_command.rb,
lib/webgen/cli/apply_command.rb,
lib/webgen/cli/create_command.rb,
lib/webgen/cli/webgui_command.rb

Overview

Namespace for all classes that act as CLI commands.

Implementing a CLI command

Each CLI command class needs to be put into this module and has to end with Command, otherwise it is not used. A CLI command is an extension that can be invoked from the webgen command and thus needs to be derived from CmdParse::Command. For detailed information on this class and the whole cmdparse package have a look at http://cmdparse.rubyforge.org!

Sample CLI command

Here is a sample CLI command extension:

require 'webgen/cli'

class Webgen::CLI::SampleCommand < CmdParse::Command

def initialize
  super('sample', false)
  self.short_desc = "This sample command just outputs its parameters"
  self.description = Utils.format("Uses the global verbosity level and outputs additional " +
    "information when the level is set to verbose!")
  @username = nil
  self.options = CmdParse::OptionParserWrapper.new do |opts|
    opts.separator "Options:"
    opts.on('-u', '--user USER', String,
      'Specify an additional user name to output') {|@username|}
  end
end

def execute(args)
  if args.length == 0
    raise OptionParser::MissingArgument.new('ARG1 [ARG2 ...]')
  else
    puts "Command line arguments:"
    args.each {|arg| puts arg}
    if commandparser.verbosity == :verbose
      puts "Yeah, some additional information is always cool!"
    end
    puts "The entered username: #{@username}" if @username
  end
end

end

Note the use of Utils.format in the initialize method so that the long text gets wrapped correctly! The Utils class provides some other useful methods, too!

For information about which attributes are available on the webgen command parser instance have a look at Webgen::CLI::CommandParser!

Defined Under Namespace

Classes: ApplyCommand, CommandParser, CreateCommand, RunCommand, Utils, WebguiCommand