[go: up one dir, main page]

Menu

[7446bb]: / cli / cli.cc  Maximize  Restore  History

Download this file

58 lines (46 with data), 1.6 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "cli.h"
void cli_parser::parse_args ( int argc, char ** argv ) {
unsigned int arg;
for (arg=0; arg<argc; arg++) {
if ( !strcmp ( argv[arg], "--version" ) ) {
print_version ();
exit(0);
}
}
for (arg=0; arg<argc; arg++) {
if ( !strcmp ( argv[arg], "-h" ) ) {
print_help ();
}
}
for (arg=1; arg<argc; arg++) {
if ( optargs.count ( argv[arg] ) > 0 && arg<argc-1 ) {
optargs[argv[arg]] = argv[arg+1]; arg++;
} else if ( optswitch.count ( argv[arg] ) > 0 ) {
optswitch[argv[arg]] = !optswitch[argv[arg]];
} else {
args.push_front ( argv[arg] );
}
}
}
void cli_parser::print_help ( void ) {
print_version();
std::map<std::string,std::string>::iterator optargs_i;
std::map<std::string,bool>::iterator optswitch_i;
std::cout << "\nCall: " << command << "\n\n";
std::cout << "Options:\n";
std::cout << "--------\n\n";
for ( optargs_i = optargs.begin(); optargs_i != optargs.end(); optargs_i++ ) {
std::cout << " " << (*optargs_i).first << " default: " << (*optargs_i).second << "\n";
std::cout << " " << optargs_help[(*optargs_i).first] << "\n\n";
}
std::cout << "Switches:\n";
std::cout << "---------\n\n";
for ( optswitch_i = optswitch.begin(); optswitch_i != optswitch.end(); optswitch_i++ ) {
std::cout << " " << (*optswitch_i).first << " default: " << (*optswitch_i).second << "\n";
std::cout << " " << optswitch_help[(*optswitch_i).first] << "\n\n";
}
exit ( 0 );
}
void cli_parser::print_version ( void ) {
std::cout << "Psignifit3 cli, version: " << VERSION << "\n";
}