mirror of
https://github.com/RubyMetric/chsrc
synced 2025-12-20 10:55:45 +08:00
Merge hengG
This commit is contained in:
57
chsrc.c
57
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;i<sizeof(os_ubuntu_sources);i++) {
|
||||
// 循环测速
|
||||
}
|
||||
const char* source_name = os_ubuntu_sources[selected].mirror->name;
|
||||
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<Array_Size(os_packagers); i++) {
|
||||
const char const** packager = os_packagers[i];
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user