Add support for Rust

This commit is contained in:
Aoran Zeng 2023-09-05 14:17:31 +08:00
parent d08b8ca9be
commit b7bbba9f03
3 changed files with 36 additions and 35 deletions

View File

@ -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
View File

@ -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 truefalse
*/

View File

@ -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/"}
},