Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/01-Bug_Report.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 🐞Bug 报告
name: 🐞 Bug 报告
description: 有 Bug 了吗?
title: "[Bug] "
labels: []
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/02-Target_Request.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 🫸我想要对 target 换源!
name: 🫸 我想要对 target 换源!
description: 想要对尚未支持的 target 进行换源?
title: "[New Target] "
labels: []
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/03-Source_Share.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 😋我找到了新的可用源!
name: 😋 我找到了新的可用源!
description: 为大家分享新的可用源!
title: "[New Source] "
labels: ['源']
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/04-Mirror_Share.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: 🎉隔壁新开了个镜像站!
name: 🎉 隔壁新开了个镜像站!
description: 告诉我们哪里开了个新镜像站!
title: "[New Mirror] "
labels: ['镜像站']
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ xy

# 'chsrc set -local' generated
.bundle
.npmrc

# Generated when testing
nul
Expand Down
90 changes: 56 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,18 @@

本软件为**自由软件**,SDPX 软件许可证为 `GPL-3.0-or-later and MIT`

<a href="https://hellogithub.com/repository/7666ba91e01e4a59be5809b02d9e8ff6" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=7666ba91e01e4a59be5809b02d9e8ff6&claim_uid=H6YVMUy7ulev8R4&theme=dark" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<br>

<table align="center">
<tr>
<td>
<a href="https://trendshift.io/repositories/10744" target="_blank"><img src="https://trendshift.io/api/badge/repositories/10744" alt="RubyMetric%2Fchsrc | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</td>
<td>
<a href="https://hellogithub.com/repository/7666ba91e01e4a59be5809b02d9e8ff6" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=7666ba91e01e4a59be5809b02d9e8ff6&claim_uid=H6YVMUy7ulev8R4&theme=dark" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
</td>
</tr>
</table>

<br>

Expand Down Expand Up @@ -45,9 +56,7 @@
## 📌 示例

<div align="center">
<img alt="chsrc set node" src="image/example-node.png"/>
<br>
<img alt="chsrc ls -en ruby" src="image/example-ls-ruby.png"/>
<img alt="chsrc set node" src="image/example-set-nodejs.png"/>
</div>

<br>
Expand Down Expand Up @@ -208,28 +217,33 @@ chsrc set -local pdm
## 编程语言开发

```bash
chsrc set ruby 或 gem
chsrc set python 或 pip / poetry / pdm # 同时换pip、poetry 和 pdm 这3个
chsrc set ruby|rb|gem|bundler|rubygems

chsrc set node|nodejs # 可同时换 npm, yarn 和 pnpm 3个,也可以3个独立换源
chsrc set python | py | pypi # 同时换 pip、poetry 和 pdm 这3个包管理器,也可以3个独立换源
chsrc set pip
chsrc set poetry
chsrc set pdm

chsrc set node | nodejs # 同时换 npm, yarn 和 pnpm 3个,也可以3个独立换源
chsrc set npm
chsrc set yarn
chsrc set pnpm

chsrc set perl cpan
chsrc set php composer
chsrc set lua luarocks
chsrc set perl | cpan
chsrc set php | composer
chsrc set lua | luarocks

chsrc set go
chsrc set rust 或 cargo / crate
chsrc set java 或 maven / mvn / gradle
chsrc set clojure 或 clojars
chsrc set dart 或 pub / flutter # 同时会为flutter换源
chsrc set haskell 或 hackage/cabal/stack
chsrc set ocaml 或 opam
chsrc set rust | cargo | crate
chsrc set java | maven | mvn | gradle
chsrc set clojure | clojars
chsrc set dart | pub
chsrc set flutter
chsrc set haskell | hackage/cabal/stack
chsrc set ocaml | opam

# 同时会为 bioconductor 换源
chsrc set r cran
chsrc set r | cran
chsrc set julia
```

Expand All @@ -239,33 +253,33 @@ chsrc set julia

```bash
sudo chsrc set ubuntu
sudo chsrc set linuxmint mint
sudo chsrc set linuxmint | mint
sudo chsrc set debian
sudo chsrc set fedora
sudo chsrc set suse opensuse
sudo chsrc set suse | opensuse
sudo chsrc set kali
sudo chsrc set arch
sudo chsrc set archlinuxcn
sudo chsrc set manjaro
sudo chsrc set gentoo
sudo chsrc set rocky rockylinux
sudo chsrc set alma almalinux
sudo chsrc set rocky | rockylinux
sudo chsrc set alma | almalinux
sudo chsrc set alpine
sudo chsrc set void voidlinux
sudo chsrc set void | voidlinux
sudo chsrc set solus
sudo chsrc set ros ros2
sudo chsrc set ros | ros2
sudo chsrc set trisquel
sudo chsrc set lite linuxlite
sudo chsrc set raspi raspberrypi
sudo chsrc set lite | linuxlite
sudo chsrc set raspi | raspberrypi
sudo chsrc set armbian
sudo chsrc set openwrt

sudo chsrc set openeuler
sudo chsrc set openanolis anolis
sudo chsrc set openanolis | anolis
sudo chsrc set openkylin
sudo chsrc set deepin

chsrc set msys2 msys
chsrc set msys2 | msys

# BSD
sudo chsrc set freebsd
Expand All @@ -279,15 +293,15 @@ sudo chsrc set netbsd

```bash
chsrc set winget
chsrc set brew homebrew
chsrc set cocoapods cocoa / pod
chsrc set dockerhub docker
chsrc set flathub flatpak
chsrc set brew | homebrew
chsrc set cocoapods | cocoa | pod
chsrc set dockerhub | docker
chsrc set flathub | flatpak
chsrc set nix
chsrc set guix
chsrc set emacs elpa
chsrc set tex ctan / latex / texlive / miktex
chsrc set conda anaconda
chsrc set emacs | elpa
chsrc set tex | ctan | latex | texlive | miktex
chsrc set conda | anaconda
```

<br>
Expand Down Expand Up @@ -333,3 +347,11 @@ make clean
5. [Thanks Mirror 项目](https://github.com/eryajf/Thanks-Mirror) by [@eryajf](https://github.com/eryajf)

<br>

## 🚀 赞赏支持

你是否因为使用 `chsrc` 而节省了时间和精力 or whatever?

<img src="https://raw.githubusercontent.com/ccmywish/support-my-oss-work/main/wechat.png" alt="wechat" style="width:300px;"/>

<br>
Binary file removed image/example-node.png
Binary file not shown.
Binary file added image/example-set-nodejs.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
77 changes: 55 additions & 22 deletions include/source.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Contributors : Shengwei Chen <414685209@qq.com>
* |
* Created on : <2023-08-29>
* Last modified : <2024-08-23>
* Last modified : <2024-09-14>
*
* 镜像站与换源信息
* ------------------------------------------------------------*/
Expand Down Expand Up @@ -83,33 +83,66 @@ Nju = {"nju", "NJU", "南京大学开源镜像站",

/**
* 商业公司提供的源
*
* @warning 腾讯软件源中,有很多链接都已失效,请仔细检查
*/
MirrorSite
Ali = {"ali", "Ali OPSX", "阿里巴巴开源镜像站", "https://developer.aliyun.com/mirror/",
"https://mirrors.aliyun.com/deepin-cd" Big_File_deepin},

Tencent = {"tencent", "Tencent", "腾讯软件源", "https://mirrors.tencent.com/",
"https://mirrors.cloud.tencent.com/debian" Big_File_debian},

Huawei = {"huawei", "Huawei Cloud", "华为开源镜像站", "https://mirrors.huaweicloud.com/",
"https://mirrors.huaweicloud.com/debian" Big_File_debian },

Volcengine = {"volc", "Volcengine", "火山引擎开源软件镜像站", "https://developer.volcengine.com/mirror/",
"https://mirrors.volces.com/debian" Big_File_debian },

Netease = {"netease", "Netease", "网易开源镜像站", "https://mirrors.163.com/",
"https://mirrors.163.com/deepin-cd" Big_File_deepin},

Sohu = {"sohu", "SOHU", "搜狐开源镜像站", "https://mirrors.sohu.com/",
"https://mirrors.sohu.com/deepin-cd" Big_File_deepin};
Ali = {
"ali", "Ali OPSX Public", "阿里巴巴开源镜像站(公网)",
"https://developer.aliyun.com/mirror/",
"https://mirrors.aliyun.com/deepin-cd" Big_File_deepin},

/*
// https://mirrors.cloud.aliyuncs.com/
Ali_ECS_VPC = {
"ali-ECS-VPC", "Ali OPSX ECS VPC", "阿里巴巴开源镜像站(ECS VPC网络)",
"https://developer.aliyun.com/mirror/",
"https://mirrors.cloud.aliyuncs.com/deepin-cd" Big_File_deepin},

// https://mirrors.aliyuncs.com/
Ali_ECS_classic = {
"ali-ECS", "Ali OPSX ECS", "阿里巴巴开源镜像站(ECS 经典网络)",
"https://developer.aliyun.com/mirror/",
"https://mirrors.aliyuncs.com/deepin-cd" Big_File_deepin},
*/

Tencent = {
"tencent", "Tencent Public", "腾讯软件源(公网)", "https://mirrors.tencent.com/",
"https://mirrors.cloud.tencent.com/debian" Big_File_debian},

/*
Tencent_Intra = {
"tencent-intra", "Tencent Intranet", "腾讯软件源(内网)", "https://mirrors.tencent.com/",
"https://mirrors.cloud.tencentyun.com/debian" Big_File_debian},
*/

Huawei = {"huawei", "Huawei Cloud", "华为开源镜像站", "https://mirrors.huaweicloud.com/",
"https://mirrors.huaweicloud.com/debian" Big_File_debian },

Volcengine = {
"volc", "Volcengine", "火山引擎开源软件镜像站(公网)",
"https://developer.volcengine.com/mirror/",
"https://mirrors.volces.com/debian" Big_File_debian },
/*
Volceengine_Intra = {
"volc-intra", "Volcengine Intranet", "火山引擎开源软件镜像站(内网)",
"https://developer.volcengine.com/mirror/",
"https://mirrors.ivolces.com/debian" Big_File_debian },
*/

Netease = {
"netease", "Netease", "网易开源镜像站",
"https://mirrors.163.com/",
"https://mirrors.163.com/deepin-cd" Big_File_deepin},

Sohu = {
"sohu", "SOHU", "搜狐开源镜像站",
"https://mirrors.sohu.com/",
"https://mirrors.sohu.com/deepin-cd" Big_File_deepin};


MirrorSite
Upstream = {"upstream", "Upstream", "上游默认源", NULL, NULL};
Upstream = {"upstream", "Upstream", "上游默认源", NULL, NULL};
MirrorSite
UserDefine = {"user", "用户自定义", "用户自定义", NULL, NULL};
UserDefine = {"user", "用户自定义", "用户自定义", NULL, NULL};


typedef struct SourceInfo_t {
Expand Down
46 changes: 33 additions & 13 deletions src/chsrc-framework.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
* Contributors : Peng Gao <gn3po4g@outlook.com>
* |
* Created On : <2023-08-29>
* Last Modified : <2024-09-10>
* Last Modified : <2024-09-13>
*
* chsrc 头文件
* chsrc 框架
* ------------------------------------------------------------*/

#include "xy.h"
Expand All @@ -23,6 +23,9 @@ static int chsrc_get_cpucore ();
bool ProgMode_CMD_Measure = false;
bool ProgMode_CMD_Reset = false;

bool ProgMode_Target_Group = false;
int ProgMode_Leader_Selected_Index = -1;


/* 命令行选项 */
bool CliOpt_IPv6 = false;
Expand Down Expand Up @@ -341,7 +344,7 @@ query_mirror_exist (SourceInfo *sources, size_t size, char *target, char *input)

if (xy_streql ("first", input))
{
char *msg = CliOpt_InEnglish ? "Will use the first speed source measured by maintainers" : "将使用维护团队测速第一的源";
char *msg = CliOpt_InEnglish ? "Will use the first speedy source measured by maintainers" : "将使用维护团队测速第一的源";
say (msg);
return 1; // 返回第2个,因为第1个是上游默认源
}
Expand Down Expand Up @@ -748,19 +751,31 @@ source_has_empty_url (SourceInfo *source)
return source->url == NULL;
}



/**
* 用户*只可能*通过下面三种方式来换源,无论哪一种都会返回一个 SourceInfo 出来
*
* 1. 用户指定 MirrorCode
* 2. 用户什么都没指定 (将测速选择最快镜像)
* 3. 用户给了一个 URL
* 用户*只可能*通过下面5种方式来换源,无论哪一种都会返回一个 SourceInfo 出来
* option:
* 1. 用户指定某个 MirrorCode
* 2. NULL: 用户什么都没指定 (将测速选择最快镜像)
* 3. 用户给了一个 URL
* 4. ChsrcTypeReset
* 选用了Leader target
* 5. ProgMode_Leader_Selected_Index 将给出所选索引
*
* @dependency 变量 option
* @dependency 变量 source
*/
#define chsrc_yield_source(for_what) \
SourceInfo source; \
if (is_url (option)) \
#define chsrc_yield_the_source(for_what) \
if (ProgMode_Target_Group==true && ProgMode_Leader_Selected_Index==-1) \
{ \
ProgMode_Leader_Selected_Index = use_specific_mirror_or_auto_select (option, for_what); \
source = for_what##_sources[ProgMode_Leader_Selected_Index]; \
} \
else if (ProgMode_Target_Group==true && ProgMode_Leader_Selected_Index!=-1) \
{ \
source = for_what##_sources[ProgMode_Leader_Selected_Index]; \
} \
else if (is_url (option)) \
{ \
SourceInfo __tmp = { &UserDefine, option }; \
source = __tmp; \
Expand All @@ -771,6 +786,11 @@ source_has_empty_url (SourceInfo *source)
source = for_what##_sources[__index]; \
}

#define chsrc_yield_source(for_what) \
SourceInfo source; \
chsrc_yield_the_source(for_what)




#define split_between_source_changing_process puts ("--------------------------------")
Expand All @@ -793,7 +813,7 @@ confirm_source (SourceInfo *source)
// 之所以禁用,是因为有的 reset 我们并没有实现,我们在这里阻止这些邪恶的用户
if (source_is_upstream (source) && source_has_empty_url (source))
{
char *msg = CliOpt_InEnglish ? "Not implement RESET for the target yet" : "暂未对该目标实现重置";
char *msg = CliOpt_InEnglish ? "Not implement `reset` for the target yet" : "暂未对该目标实现重置";
chsrc_error (msg);
exit (Exit_Unsupported);
}
Expand Down
Loading