✨ finish parse trigger command
This commit is contained in:
parent
43ff63dc83
commit
734aec1bc2
|
@ -11,8 +11,10 @@ var new = func(description) {
|
||||||
add_subparser: func(name, help) {
|
add_subparser: func(name, help) {
|
||||||
return _add_subparser(parser, name, help);
|
return _add_subparser(parser, name, help);
|
||||||
},
|
},
|
||||||
parse: func() {
|
parse_args: func() {
|
||||||
return _parse(parser, _arg);
|
var result_hash = {};
|
||||||
|
_parse(parser, _arg, result_hash);
|
||||||
|
return result_hash;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
parser.add_command("--help", "-h", "Get help info and exit");
|
parser.add_command("--help", "-h", "Get help info and exit");
|
||||||
|
@ -52,30 +54,42 @@ var _help = func(parser) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var _parse = func(parser, args) {
|
var _parse = func(parser, args, result_hash) {
|
||||||
if (size(args)==0) {
|
if (size(args)==0) {
|
||||||
|
println("Require more command, use \"--help\" to get help.\n");
|
||||||
_help(parser);
|
_help(parser);
|
||||||
return;
|
exit(0);
|
||||||
}
|
}
|
||||||
var first_arg = args[0];
|
var first_arg = args[0];
|
||||||
foreach(var subparser; parser.subparser) {
|
foreach(var subparser; parser.subparser) {
|
||||||
if (subparser.name==first_arg) {
|
if (subparser.name==first_arg) {
|
||||||
return _parse(subparser.parser, size(args)>1? args[1:]:[]);
|
result_hash[subparser.name] = true;
|
||||||
|
_parse(subparser.parser, size(args)>1? args[1:]:[], result_hash);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach(var cmd; parser.command_list) {
|
foreach(var this_arg; args) {
|
||||||
if (first_arg=="--help" or first_arg=="-h") {
|
var find_command_flag = false;
|
||||||
|
foreach(var cmd; parser.command_list) {
|
||||||
|
if (this_arg=="--help" or this_arg=="-h") {
|
||||||
|
_help(parser);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
if (this_arg==cmd.full_name or this_arg==cmd.short_name) {
|
||||||
|
result_hash[cmd.full_name] = true;
|
||||||
|
find_command_flag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!find_command_flag) {
|
||||||
|
println("Invalid command `", this_arg, "`.\n");
|
||||||
_help(parser);
|
_help(parser);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
if (first_arg==cmd.full_name or first_arg==cmd.short_name) {
|
|
||||||
return "[WIP]";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
# unreachable
|
# unreachable
|
||||||
println("Invalid command `", first_arg, "`\n");
|
println("Invalid command `", first_arg, "`.\n");
|
||||||
_help(parser);
|
_help(parser);
|
||||||
return;
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
var _add_command = func(parser, long, short, help) {
|
var _add_command = func(parser, long, short, help) {
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
use std.argparse;
|
use std.argparse;
|
||||||
|
|
||||||
var args = argparse.new("test cli");
|
var args = argparse.new("Nasal ArgParse Test CLI");
|
||||||
args.add_command("--what", "-w", "what-what");
|
args.add_command("--what", "-wa", "what-command");
|
||||||
var subparser0 = args.add_subparser("subcommand0", "what-what");
|
args.add_command("--who", "-wo", "who-command");
|
||||||
subparser0.add_command("--sub-what", "-sw", "sub-what-what");
|
args.add_command("--where", "-we", "where-command");
|
||||||
args.parse();
|
var subparser0 = args.add_subparser("subcommand0", "Nasal ArgParse Test CLI Sub-command 0");
|
||||||
|
subparser0.add_command("--sub0-what", "-s0w", "sub0-what-command");
|
||||||
|
var subparser1 = args.add_subparser("subcommand1", "Nasal ArgParse Test CLI Sub-command 1");
|
||||||
|
subparser1.add_command("--sub1-what", "-s1w", "sub1-what-command");
|
||||||
|
var result = args.parse_args();
|
||||||
|
println(result);
|
||||||
|
|
Loading…
Reference in New Issue