#include <cli.h>
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.
As a matter of definition, the command-line arguments are simply called arguments. These arguments may be options (in which case they begin with either one dash or two) or parameters to these options. When run in interactive mode, these options are also commands.
Definition at line 189 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) |
Set an alias alias for the string str . | |
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 | |
std::string | tilde_string |
Desc. | |
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 |
Static Public Attributes | |
Value to indicate whether commands are also command-line options | |
static const int | comm_option_command = 0 |
static const int | comm_option_cl_param = 1 |
static const int | comm_option_both = 2 |
Protected Member Functions | |
int | expand_tilde (std::vector< std::string > &sv) |
Desc. | |
int | apply_alias (std::vector< std::string > &sv, std::string sold, std::string snew) |
Replace all occurences of sold with snew in sv . | |
int | separate (std::string str, std::vector< std::string > &sv) |
Separate a string into words, handling quotes. | |
bool | string_equal_dash (std::string s1, std::string s2) |
Compare two strings, treating dashes and underscores as equivalent. | |
The hard-coded command functions | |
int | comm_option_alias (std::vector< std::string > &sv, bool itive_com) |
int | comm_option_commands (std::vector< std::string > &sv, bool itive_com) |
int | comm_option_get (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_no_intro (std::vector< std::string > &sv, bool itive_com) |
int | comm_option_run (std::vector< std::string > &sv, bool itive_com) |
int | comm_option_set (std::vector< std::string > &sv, bool itive_com) |
int | comm_option_warranty (std::vector< std::string > &sv, bool itive_com) |
Protected Attributes | |
int | verbose |
Control screen output. | |
collection * | cop |
Pointer to collection for parameters. | |
char | buf [300] |
Storage for getline. | |
comm_option_funct * | user_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 |
virtual char* cli_gets | ( | const char * | c | ) | [inline, virtual] |
int process_args | ( | int | argv, | |
const char * | argc[], | |||
std::vector< cmd_line_arg > & | ca, | |||
int | debug = 0 | |||
) |
This doesn't actually execute the functions for the corresponding options, but simply processes the parameters argv
and argc
and packs the information into ca
.
int separate | ( | std::string | str, | |
std::vector< std::string > & | sv | |||
) | [protected] |
This function separates a string into words, and handles words that begin with a "
by adding more words until finding one which ends with a "
.
This is used to reformat command descriptions and help text for the screen width in comm_option_help(), to process lines read from a file in comm_option_run(), and to process input in run_interactive().
int set_alias | ( | std::string | alias, | |
std::string | str | |||
) | [inline] |
int set_comm_option | ( | comm_option_s & | ic | ) |
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 | ) |
Most errors are output to the screen even if verbose is zero.
bool gnu_intro |
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page