Consider second arg

This commit is contained in:
Aoran Zeng 2023-08-28 23:10:09 +08:00
parent 5d3361a082
commit f62353cbce

43
chsrc.c
View File

@ -13,6 +13,12 @@ void
pl_chsrc_python (char* source_name) pl_chsrc_python (char* source_name)
{ {
char* source_url = NULL; char* source_url = NULL;
if (NULL==source_name) {
source_name = "tuna";
puts("chsrc: Default selection is TsingHua Tuna");
}
if (0==strcmp("tuna", source_name)) { if (0==strcmp("tuna", source_name)) {
puts("chsrc: Selected source provider: Tuna"); puts("chsrc: Selected source provider: Tuna");
source_url = "https://pypi.tuna.tsinghua.edu.cn/simple"; source_url = "https://pypi.tuna.tsinghua.edu.cn/simple";
@ -34,6 +40,11 @@ pl_chsrc_ruby (char* source_name)
{ {
char* source_url = NULL; char* source_url = NULL;
if (NULL==source_name) {
source_name = "rubychina";
puts("chsrc: Default selection is Ruby China");
}
if (0==strcmp("rubychina", source_name)) { if (0==strcmp("rubychina", source_name)) {
puts("chsrc: Selected source provider: Ruby China"); puts("chsrc: Selected source provider: Ruby China");
source_url = "https://gems.ruby-china.com"; source_url = "https://gems.ruby-china.com";
@ -104,6 +115,9 @@ void
call_cmd (void* cmdptr, char* arg) call_cmd (void* cmdptr, char* arg)
{ {
void (*cmd_func)(char*) = cmdptr; void (*cmd_func)(char*) = cmdptr;
if (NULL==arg) {
puts("chsrc: Use the default");
}
cmd_func(arg); cmd_func(arg);
} }
@ -120,18 +134,39 @@ print_help()
int int
main(int argc, char const *argv[]) main(int argc, char const *argv[])
{ {
if (1==argc) { // 未提供参数时
if (argc<=1) {
print_help(); return 0; print_help(); return 0;
} }
// 第一个参数
char* target = NULL;
if (0==strcmp("-h",argv[1])) {
print_help(); return 0;
} else {
target = argv[1];
}
char* option = NULL;
char* cmdarg = NULL;
// 第二个参数
if (argc>=2)
{
if (argv[2][0]=='-') {
option = argv[2];
} else {
cmdarg = argv[2];
}
}
int matched = 0; int matched = 0;
for (int i=0; ARRAY_SIZE(pl_packagers); i++) { for (int i=0; i<ARRAY_SIZE(pl_packagers); i++) {
const char const** packager = pl_packagers[i]; const char const** packager = pl_packagers[i];
int k = 0; int k = 0;
const char* alias = packager[k]; const char* alias = packager[k];
while (NULL!=alias) { while (NULL!=alias) {
if (0==strcmp(argv[1], alias)) { if (0==strcmp(target, alias)) {
// printf("matched: %s\n", alias); // printf("matched: %s\n", alias);
matched = 1; break; matched = 1; break;
} }
@ -142,7 +177,7 @@ main(int argc, char const *argv[])
do { do {
k++; alias = packager[k]; k++; alias = packager[k];
} while (NULL!=alias); } while (NULL!=alias);
call_cmd ((void*) packager[k+1], "tuna"); call_cmd ((void*) packager[k+1], cmdarg);
} }
} }