diff --git a/chsrc.c b/chsrc.c index 67d999c..c6b1a37 100644 --- a/chsrc.c +++ b/chsrc.c @@ -128,6 +128,35 @@ pl_ruby_chsrc (char* option) xy_success(xy_strjoin("chsrc: 感谢镜像提供方:", source_name)); } +void +os_ubuntu_chsrc (char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_ubuntu_sources[selected].mirror->abbr; + const char* source_url = os_ubuntu_sources[selected].url; + + char* beifen = "cp -rf /etc/apt/sources.list /etc/apt/sources.list.bak"; + system(beifen); + // free(beifen); + puts("备份文件名: /etc/apt/sources.list.bak"); + const char* current_url = xy_strch(source_url,'/',"\\/"); + + char* cmd = xy_strjoin(xy_strjoin("sed -E \'s/(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/ubuntu\\//\\1",current_url),"/\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); + system(cmd); + free(cmd); + + char* rm = "rm -rf /etc/apt/source.list.bak"; + system(rm); + // free(rm); + + puts("chsrc: 为'ubuntu'命令换源"); + puts(xy_strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + #define chsrcfunc(func) (const char const*)func static const char const *pl_ruby[] = {"gem", "ruby", "rb", NULL, chsrcfunc(pl_ruby_chsrc) }, @@ -142,12 +171,19 @@ static const char const *pl_maven[] = {"maven", NULL}, *pl_gradle[] = {"gradel",NULL}, *pl_julia[] = {"julia", NULL}, + +*os_ubuntu[] = {"ubuntu", NULL, chsrcfunc(os_ubuntu_chsrc)}, // Java暂时需要直接指定包管理器 // pl_java **pl_packagers[] = { pl_ruby, pl_python, pl_nodejs, pl_perl, pl_php, pl_cran, pl_rust, pl_go, pl_dotnet, pl_maven, pl_gradle, pl_julia +}, +**os_packagers[] = { + os_ubuntu }; +// static const char const +// *os_ubuntu[] = {"ubuntu", NULL, cmdfunc(os_ubuntu_chsrc)}; #undef chsrcfunc static const char const* @@ -224,6 +260,27 @@ main (int argc, char const *argv[]) int k = 0; const char* alias = packager[k]; while (NULL!=alias) { + printf("%s matched: %s\n",target, alias); + if (0==strcmp(target, alias)) { + // printf("matched: %s\n", alias); + matched = 1; break; + } + k++; + alias = packager[k]; + } + if (matched) { + do { + k++; alias = packager[k]; + } while (NULL!=alias); + call_cmd ((void*) packager[k+1], cmdarg); + } + } + for (int i=0; i