Refactor to use better argument parsing

This commit is contained in:
Aoran Zeng 2023-08-31 20:24:06 +08:00
parent cb2a46b8df
commit 84f2119fd7

73
chsrc.c
View File

@ -581,8 +581,8 @@ usage[] = {
"维护: https://gitee.com/RubyMetric/chsrc\n", "维护: https://gitee.com/RubyMetric/chsrc\n",
"使用chsrc <command> ", "使用chsrc <command> [target]",
"help # 打印帮助,或 -h, --help", "help # 打印帮助,或 -h, --help",
"list [target] # 查看可换源软件,或该软件可以换哪些源", "list [target] # 查看可换源软件,或该软件可以换哪些源",
"cesu <target> # 对该软件所有源测速", "cesu <target> # 对该软件所有源测速",
"get <target> # 查看当前软件的源使用情况", "get <target> # 查看当前软件的源使用情况",
@ -621,19 +621,78 @@ main (int argc, char const *argv[])
print_help(); return 0; print_help(); return 0;
} }
const char* command = argv[1];
const char* target = NULL; const char* target = NULL;
if (xy_streql("-h", argv[1]) || xy_streql("help", argv[1]) || xy_streql("--help", argv[1])) {
print_help(); return 0; /* chsrc help */
} else { if (xy_streql(command, "-h") ||
target = argv[1]; xy_streql(command, "help") ||
xy_streql(command, "--help"))
{
print_help();
return 0;
} }
/* chsrc list */
else if (xy_streql(command, "list"))
{
if (argc < 2) {
puts("chsrc: 列出所有支持的软件,以及所有可用源");
} else {
puts("chsrc: 列出所有可用镜像站");
}
return 0;
}
/* chsrc cesu */
else if (xy_streql(command, "cesu"))
{
if (argc < 2) {
xy_error ("chsrc: 请您提供想要测速源的软件名; 使用 chsrc list 查看所有支持的软件");
return 1;
}
puts("chsrc: 测试提供该软件源的镜像站点速度");
return 0;
}
/* chsrc get */
else if (xy_streql(command, "get"))
{
if (argc < 2) {
xy_error ("chsrc: 请您提供想要查看源的软件名; 使用 chsrc list 查看所有支持的软件");
return 1;
}
puts("chsrc: 查看该软件的换源情况");
return 0;
}
/* chsrc set */
else if (xy_streql(command, "set"))
{
if (argc < 2) {
xy_error ("chsrc: 请您提供想要设置源的软件名; 使用 chsrc list 查看所有支持的软件");
return 1;
}
puts("chsrc: 开始换源");
return 0;
}
/* 不支持的命令 */
else
{
xy_error ("chsrc: 不支持的命令,请使用 chsrc help 查看使用方式");
return 1;
}
const char* option = NULL; const char* option = NULL;
const char* cmdarg = NULL; const char* cmdarg = NULL;
if (argc>=2) if (argc>=2)
{ {
// printf ("argc = %d\n", argc);
if (argv[2][0]=='-') { if (argv[2][0]=='-') {
option = argv[2]; option = argv[2];
} else { } else {