mirror of
https://github.com/RubyMetric/chsrc.git
synced 2025-04-23 12:44:15 +08:00
Add support for Rust
This commit is contained in:
parent
d08b8ca9be
commit
b7bbba9f03
12
README.md
12
README.md
@ -31,6 +31,8 @@ set <target> def(ault) # 换源,默认使用维护团队测速第一的源
|
||||
set <target> <mirror> # 换源,指定使用某镜像站
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
## 编程语言开发
|
||||
|
||||
```bash
|
||||
@ -38,19 +40,21 @@ chsrc set ruby 或 chsrc set gem
|
||||
chsrc set python 或 chsrc set pip
|
||||
chsrc set node 或 chsrc set npm 或 chsrc set nodejs
|
||||
chsrc set perl 或 chsrc set cpan
|
||||
chsrc set php 或 chsrc composer
|
||||
chsrc set php 或 chsrc set composer
|
||||
|
||||
chsrc set go
|
||||
chsrc set rust 或 chsrc set cargo 或 chsrc set crate
|
||||
chsrc set java 或 chsrc set maven 或 chsrc set mvn 或 chsrc gradle
|
||||
|
||||
# 额外会为 bioconductor 换源
|
||||
# 同时会为 bioconductor 换源
|
||||
chsrc set r 或 chsrc set cran
|
||||
chsrc set julia
|
||||
```
|
||||
|
||||
TODO:
|
||||
- [ ] `chsrc set rust` 或 `chsrc set cargo` 或 `chsrc crate`
|
||||
TODO: 上述已全部完成,但
|
||||
|
||||
1. 部分换源方案当前需要用户进行少量手动操作如 `java`,`rust`
|
||||
2. 还未经多平台测试
|
||||
|
||||
## 操作系统
|
||||
|
||||
|
51
chsrc.c
51
chsrc.c
@ -17,11 +17,11 @@
|
||||
/**
|
||||
* 检测二进制程序是否存在
|
||||
*
|
||||
* @param[in] check_cmd 检测 `progname` 是否存在的一段命令,一般来说,填 `progname` 本身即可,
|
||||
* 但是某些情况下,需要使用其他命令绕过一些特殊情况,比如 python 这个命令在Windows上
|
||||
* 会自动打开 Microsoft Store,需避免
|
||||
* @param check_cmd 检测 `progname` 是否存在的一段命令,一般来说,填 `progname` 本身即可,
|
||||
* 但是某些情况下,需要使用其他命令绕过一些特殊情况,比如 python 这个命令在Windows上
|
||||
* 会自动打开 Microsoft Store,需避免
|
||||
*
|
||||
* @param[in] progname 要检测的二进制程序名
|
||||
* @param progname 要检测的二进制程序名
|
||||
*/
|
||||
bool
|
||||
does_the_program_exist (char* check_cmd, char* progname)
|
||||
@ -30,11 +30,11 @@ does_the_program_exist (char* check_cmd, char* progname)
|
||||
|
||||
int ret = system(which);
|
||||
|
||||
char buf[32] = {0};
|
||||
sprintf(buf, "错误码: %d", ret);
|
||||
// char buf[32] = {0}; sprintf(buf, "错误码: %d", ret);
|
||||
|
||||
if (0!=ret) {
|
||||
xy_warn (xy_strjoin(4, "× 命令 ", progname, " 不存在,", buf));
|
||||
// xy_warn (xy_strjoin(4, "× 命令 ", progname, " 不存在,", buf));
|
||||
xy_warn (xy_strjoin(3, "× 命令 ", progname, " 不存在"));
|
||||
return false;
|
||||
} else {
|
||||
xy_success (xy_strjoin(3, "√ 命令 ", progname, " 存在"));
|
||||
@ -516,18 +516,21 @@ pl_go_setsrc (char* option)
|
||||
|
||||
|
||||
|
||||
/* TODO: 暂未实现 */
|
||||
void
|
||||
pl_rust_getsrc (char* option)
|
||||
{
|
||||
// char* cmd = "npm config get registry";
|
||||
// system(cmd);
|
||||
char* cmd = NULL;
|
||||
if(xy_on_windows) {
|
||||
cmd = "type %USERPROFILE%\\.cargo";
|
||||
} else {
|
||||
cmd = "cat ~/.cargo";
|
||||
}
|
||||
chsrc_logcmd(cmd);
|
||||
system(cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rust 换源
|
||||
*
|
||||
* 参考:https://help.mirrors.cernet.edu.cn/crates.io-index.git
|
||||
* Rust 换源,参考:https://mirrors.tuna.tsinghua.edu.cn/help/crates.io-index/
|
||||
*/
|
||||
void
|
||||
pl_rust_setsrc (char* option)
|
||||
@ -548,16 +551,10 @@ pl_rust_setsrc (char* option)
|
||||
"replace-with = 'mirror'\n\n"
|
||||
|
||||
"[source.mirror]\n"
|
||||
"registry = \"", source.url, "\"");
|
||||
"registry = \"sparse+", source.url, "\"");
|
||||
|
||||
|
||||
char* cmd = NULL;
|
||||
if (xy_on_windows)
|
||||
cmd = xy_strjoin(3, "echo ", file, ">> \%USERPROFILE%\\.cargo");
|
||||
else
|
||||
cmd = xy_strjoin(3, "echo ", file, ">> $HOME/.cargo");
|
||||
|
||||
system(cmd);
|
||||
xy_warn ("chsrc: 请您手动写入以下内容到 ~/.cargo 文件中");
|
||||
puts(file);
|
||||
chsrc_say_thanks(&source);
|
||||
}
|
||||
|
||||
@ -1027,13 +1024,13 @@ def_target_info(pl_nodejs);
|
||||
def_target_info(pl_perl);
|
||||
def_target_info(pl_php);
|
||||
def_target_info(pl_go);
|
||||
def_target_info(pl_rust);
|
||||
def_target_info(pl_java);
|
||||
def_target_info(pl_r);
|
||||
def_target_info(pl_julia);
|
||||
|
||||
target_info
|
||||
pl_rust_target = {pl_rust_setsrc, NULL, pl_rust_sources, pl_rust_sources_n},
|
||||
pl_dotnet_target = {pl_dotnet_setsrc, NULL, pl_dotnet_sources, pl_dotnet_sources_n};
|
||||
pl_dotnet_target = {pl_dotnet_setsrc, NULL, pl_dotnet_sources, pl_dotnet_sources_n};
|
||||
|
||||
|
||||
#define targetinfo(t) (const char const*)t
|
||||
@ -1256,9 +1253,9 @@ iterate_targets_(const char const*** array, size_t size, const char* input, cons
|
||||
/**
|
||||
* 寻找target,并根据`code`执行相应的操作
|
||||
*
|
||||
* @param[in] input 用户输入的目标
|
||||
* @param[in] code 对target要执行的操作
|
||||
* @param[in] option 额外的指示,可为NULL
|
||||
* @param input 用户输入的目标
|
||||
* @param code 对target要执行的操作
|
||||
* @param option 额外的指示,可为NULL
|
||||
*
|
||||
* @return 找到目标返回true,未找到返回false
|
||||
*/
|
||||
|
8
chsrc.h
8
chsrc.h
@ -228,17 +228,17 @@ pl_go_sources[] = {
|
||||
|
||||
|
||||
/**
|
||||
* 2023-08-30 更新
|
||||
* 2023-09-05 更新
|
||||
*
|
||||
* TODO: 1. 速度未经测试,请Rust用户协助
|
||||
* 2. 缺少商业公司或开源社区软件源
|
||||
* @note 缺少商业公司或开源社区软件源
|
||||
*
|
||||
* @note 以下都支持稀疏索引,我们换源时都将默认添加 `sparse+`
|
||||
*/
|
||||
pl_rust_sources[] = {
|
||||
{&Sjtug_Zhiyuan, "https://mirrors.sjtug.sjtu.edu.cn/crates.io-index/"},
|
||||
{&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"},
|
||||
{&Bfsu, "https://mirrors.bfsu.edu.cn/crates.io-index/"},
|
||||
{&Ustc, "https://mirrors.ustc.edu.cn/crates.io-index/"},
|
||||
{&Cqu, "https://mirrors.cqu.edu.cn/crates.io-index/"}
|
||||
},
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user