cli Class Reference

Configurable command-line interface. More...

#include <cli.h>

Inheritance diagram for cli:

cli_readline

Detailed Description

Configurable command-line interface.

This class is experimental.

Default commands: help, get/set, quit, exit, '!', verbose, license, warranty, alias, run.

Note that if the shell command is allowed (as it is by default) there are some potential security issues which are not solved here.

Commands which begin with a '#' character are ignored.

Todo:
There are some fixme entries in cli.cpp associated with when cop is zero
Todo:
Only add get() and set() commands if some parameters are set
Idea for future:
Include a "remove command" function

Definition at line 219 of file cli.h.


Public Member Functions

int set_function (comm_option_funct &usf)
 Function to call when a set command is issued.
virtual char * cli_gets (const char *c)
 The function which obtains input from the user.
int call_args (std::vector< cmd_line_arg > &ca)
 Call functions corresponding to command-line args.
int process_args (int argv, const char *argc[], std::vector< cmd_line_arg > &ca, int debug=0)
 Process command-line arguments from a const char array.
int process_args (std::string s, std::vector< cmd_line_arg > &ca, int debug=0)
 Process command-line arguments from a string.
int set_verbose (int v)
 Set verbosity.
int run_interactive ()
 Run the interactive mode.
int set_alias (std::string alias, std::string str)
 Create a new command.
Basic operation
int set_comm_option (comm_option_s &ic)
 Add a new command.
template<class vec_t >
int set_comm_option_vec (size_t nic, vec_t &ic)
 Add a vector containing new commands.
int set_parameters (collection &co)
 Set the parameters with a collection.
int set_param_help (std::string param, std::string help)
 Set one-line help text for a parameter named param.
int run_auto (int argv, const char *argc[])
 Automatically parse arguments to main and call interactive mode if required.

Data Fields

bool gnu_intro
 If true, output the usual GNU intro when run_interactive() is called.
bool sync_verbose
 If true, then sync verbose, with a parameter of the same name.
bool shell_cmd_allowed
 If true, allow the user to use ! to execute a shell command (default true).
std::string prompt
 The prompt (default "> ").
std::string desc
 A one- or two-line description (default is empty string).
std::string cmd_name
 The name of the command.
std::string addl_help_cmd
 Additional help text for interactive mode (default is empty string).
std::string addl_help_cli
 Additional help text for command-line (default is empty string).
The hard-coded command objects
comm_option_s c_commands
comm_option_s c_help
comm_option_s c_quit
comm_option_s c_exit
comm_option_s c_license
comm_option_s c_warranty
comm_option_s c_set
comm_option_s c_get
comm_option_s c_run
comm_option_s c_no_intro
comm_option_s c_alias

Protected Member Functions

int apply_alias (std::string &s, std::string sold, std::string snew)
 Replace all occurences of sold with snew in s.
int separate (std::string str, std::vector< std::string > &sv)
 Separate a string into words.
bool string_equal (std::string s1, std::string s2)
 Compare two strings, treating dashes as underscores.
The hard-coded command functions
int comm_option_run (std::vector< std::string > &sv, bool itive_com)
int comm_option_get (std::vector< std::string > &sv, bool itive_com)
int comm_option_set (std::vector< std::string > &sv, bool itive_com)
int comm_option_help (std::vector< std::string > &sv, bool itive_com)
int comm_option_license (std::vector< std::string > &sv, bool itive_com)
int comm_option_warranty (std::vector< std::string > &sv, bool itive_com)
int comm_option_no_intro (std::vector< std::string > &sv, bool itive_com)
int comm_option_commands (std::vector< std::string > &sv, bool itive_com)
int comm_option_alias (std::vector< std::string > &sv, bool itive_com)

Protected Attributes

int verbose
 Control screen output.
collectioncop
 Pointer to collection for parameters.
char buf [300]
 Storage for getline.
comm_option_functuser_set_func
 Storage for the function to call after setting a parameter.
std::vector< comm_option_s * > clist
 List of commands.
Help for parameters
std::vector< std::string > ph_name
std::vector< std::string > ph_desc
Aliases
std::vector< std::string > al1
std::vector< std::string > al2

Static Protected Attributes

static const int comm_option_command = 0
static const int comm_option_cl_param = 1
static const int comm_option_both = 2

Member Function Documentation

virtual char* cli_gets ( const char *  c  )  [inline, virtual]

The function which obtains input from the user.

Todo:
Should this be protected?

Definition at line 427 of file cli.h.

int set_alias ( std::string  alias,
std::string  str 
) [inline]

Create a new command.

Set an alias alias for the string str Aliases can also be set using the command 'alias', but that version allows only one-word aliases.

Definition at line 472 of file cli.h.

int set_comm_option ( comm_option_s ic  ) 

Add a new command.

Each command/option must have either a short form in comm_option_s::shrt or a long from in comm_option_s::lng, which is unique from the other commands/options already present. You cannot add two commands/options with the same short form, even if they have different long forms, and vice versa.

int set_verbose ( int  v  ) 

Set verbosity.

Most errors are output to the screen even if verbose is zero.


Field Documentation

bool gnu_intro

If true, output the usual GNU intro when run_interactive() is called.

In order to conform to GNU standards, this ought not be set to false by default.

Definition at line 290 of file cli.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page