From 9542ce33bc8615f148ba5b6966f65abbb3eadbb0 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 5 Aug 2025 20:08:40 +0800 Subject: [PATCH 01/16] =?UTF-8?q?feat:=20java=20maven=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?tencent=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve RubyMetric/chsrc#238 --- src/recipe/lang/Java.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index e25a83a..6323342 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -20,8 +20,11 @@ static SourceProvider_t pl_java_upstream = static Source_t pl_java_sources[] = { {&pl_java_upstream, "https://repo1.maven.org/maven2/", NULL}, + /* 阿里镜像旧地址 https://maven.aliyun.com/nexus/content/groups/public */ {&Ali, "https://maven.aliyun.com/repository/public/", DelegateToMirror}, + /* 华为镜像CDN地址 https://repo.huaweicloud.com/repository/maven/ */ {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/", DelegateToMirror}, + {&Tencent, "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/", DelegateToMirror}, /* 网易的24小时更新一次 */ {&Netease, "http://mirrors.163.com/maven/repository/maven-public/", DelegateToMirror} }; @@ -122,4 +125,4 @@ pl_java_feat (char *option) return f; } -def_target_gsrf(pl_java); +def_target_gsrf(pl_java); \ No newline at end of file From 5aeb706796fa3de07589f51dba596118a12bf0af Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 5 Aug 2025 20:00:30 +0800 Subject: [PATCH 02/16] feat: support maven-daemon resolve RubyMetric/chsrc#183 --- src/recipe/lang/Java.c | 52 ++++++++++++++++++++++++++++++++++-------- src/recipe/menu.c | 4 ++-- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index e25a83a..5240d7b 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -29,14 +29,15 @@ def_sources_n(pl_java); void -pl_java_check_cmd (bool *maven_exist, bool *gradle_exist) +pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exist) { *maven_exist = chsrc_check_program ("mvn"); *gradle_exist = chsrc_check_program ("gradle"); + *gradle_exist = chsrc_check_program ("mvnd"); - if (! *maven_exist && ! *gradle_exist) + if (! *maven_exist && ! *gradle_exist && ! *maven_daemon_exist) { - chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一"); + chsrc_error ("maven(maven-daemon) 与 gradle 命令均未找到,请检查是否存在其一"); exit (Exit_UserCause); } } @@ -54,13 +55,33 @@ pl_java_find_maven_config () } +char * +pl_java_find_maven_daemon_config () +{ + char *buf = xy_run ("mvnd -v", 2); + char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); + maven_home = xy_str_strip (maven_home); + + char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return maven_config; +} + + void pl_java_getsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); - char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); + if (maven_exist) + { + char *maven_config = pl_java_find_maven_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } + if(maven_daemon_exist) + { + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } } @@ -70,8 +91,8 @@ pl_java_getsrc (char *option) void pl_java_setsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); chsrc_yield_source_and_confirm (pl_java); @@ -85,6 +106,16 @@ pl_java_setsrc (char *option) println (file); } + if (maven_daemon_exist) + { + char *file = xy_str_gsub (RAWSTR_pl_java_maven_config, "@1@", source.mirror->code); + file = xy_str_gsub (file, "@name@", source.mirror->name); + file = xy_str_gsub (file, "@url@", source.url); + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_strjoin (3, "请在 maven 配置文件 ", maven_config, " 中添加:")); + println (file); + } + if (gradle_exist) { if (maven_exist) br(); @@ -93,6 +124,7 @@ pl_java_setsrc (char *option) println (file); } + chsrc_determine_chgtype (ChgType_Manual); chsrc_conclude (&source); } @@ -122,4 +154,4 @@ pl_java_feat (char *option) return f; } -def_target_gsrf(pl_java); +def_target_gsrf(pl_java); \ No newline at end of file diff --git a/src/recipe/menu.c b/src/recipe/menu.c index 1501d7f..da94e67 100644 --- a/src/recipe/menu.c +++ b/src/recipe/menu.c @@ -36,7 +36,7 @@ static const char *pl_rust_cargo[] = {"rust", "cargo", "crate", "crates", NULL, t(&pl_rust_cargo_target)}, *pl_rust_rustup[]= {"rustup", NULL, t(&pl_rust_rustup_target)}, -*pl_java [] = {"java", "maven", "mvn", "gradle", NULL, t(&pl_java_target)}, +*pl_java [] = {"java", "maven", "mvn", "mvnd", "maven-daemon", "maven-mvnd", "gradle", NULL, t(&pl_java_target)}, *pl_clojure[]= {"clojure","clojars","cloj", "lein", NULL, t(&pl_clojure_target)}, *pl_dart [] = {"dart", "pub", NULL, t(&pl_dart_target)}, @@ -181,4 +181,4 @@ available_mirrors[] = { }; -/* End Target Matrix */ +/* End Target Matrix */ \ No newline at end of file From 9bec7f30cdb75da2624072522f3bc13fdf2391de Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:37:37 +0800 Subject: [PATCH 03/16] =?UTF-8?q?feat:=20support=20huawei=20cdn=20?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E6=B7=BB=E5=8A=A0=E7=B2=BE=E5=87=86=E6=B5=8B?= =?UTF-8?q?=E9=80=9F=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve RubyMetric/chsrc#238 --- src/framework/mirror.c | 9 ++++++++- src/recipe/lang/Java.c | 12 ++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/framework/mirror.c b/src/framework/mirror.c index a2db405..5d33f24 100644 --- a/src/framework/mirror.c +++ b/src/framework/mirror.c @@ -260,6 +260,13 @@ Huawei = {NotSkip, NA, NA, "https://mirrors.huaweicloud.com/ubuntu-releases" Big_File_ubuntu, ROUGH} }, +HuaweiCdn = +{ + IS_GeneralMirrorSite, + "huaweiCdn", "Huawei Cloud", "华为开源镜像站", "https://repo.huaweicloud.com/", + {NotSkip, NA, NA, "https://repo.huaweicloud.com/ubuntu-releases" Big_File_ubuntu, ROUGH} +}, + Volcengine = { IS_GeneralMirrorSite, @@ -294,4 +301,4 @@ Sohu = IS_GeneralMirrorSite, "sohu", "SOHU", "搜狐开源镜像站", "https://mirrors.sohu.com/", {NotSkip, NA, NA, "https://mirrors.sohu.com/deepin-cd" Big_File_deepin, ROUGH} -}; +}; \ No newline at end of file diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 6323342..4f1bbd3 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -19,14 +19,14 @@ static SourceProvider_t pl_java_upstream = */ static Source_t pl_java_sources[] = { - {&pl_java_upstream, "https://repo1.maven.org/maven2/", NULL}, + {&pl_java_upstream, "https://repo1.maven.org/maven2/", NULL}, /* 阿里镜像旧地址 https://maven.aliyun.com/nexus/content/groups/public */ - {&Ali, "https://maven.aliyun.com/repository/public/", DelegateToMirror}, - /* 华为镜像CDN地址 https://repo.huaweicloud.com/repository/maven/ */ - {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/", DelegateToMirror}, - {&Tencent, "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/", DelegateToMirror}, + {&Ali, "https://maven.aliyun.com/repository/public/", DelegateToMirror}, + {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/", "https://mirrors.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, + {&HuaweiCdn, "https://repo.huaweicloud.com/repository/maven/", "https://repo.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, + {&Tencent, "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/", "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, /* 网易的24小时更新一次 */ - {&Netease, "http://mirrors.163.com/maven/repository/maven-public/", DelegateToMirror} + {&Netease, "http://mirrors.163.com/maven/repository/maven-public/", "https://mirrors.163.com/maven/repository/maven-public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"} }; def_sources_n(pl_java); From 71e7312002e5f3185a9145eb840a0a0fb5ac1b0f Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sun, 10 Aug 2025 23:06:31 +0800 Subject: [PATCH 04/16] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9maven=5Fhome?= =?UTF-8?q?=E7=9A=84=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=20todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve RubyMetric/chsrc#238 --- src/recipe/lang/Java.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 5240d7b..e003fc7 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -42,12 +42,25 @@ pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exi } } +bool +chef_is_home (const char *str) +{ + return (xy_str_start_with (str, "Maven home:")); +} + +char* +pl_java_find_maven_home (const char *source) +{ + if(chef_is_home(source)) + { + char *maven_home = xy_str_delete_prefix (source, "Maven home: "); + } +} char * pl_java_find_maven_config () { - char *buf = xy_run ("mvn -v", 2); - char *maven_home = xy_str_delete_prefix (buf, "Maven home: "); + char *maven_home = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); maven_home = xy_str_strip (maven_home); char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); @@ -58,7 +71,7 @@ pl_java_find_maven_config () char * pl_java_find_maven_daemon_config () { - char *buf = xy_run ("mvnd -v", 2); + char *buf = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); maven_home = xy_str_strip (maven_home); From afd1b08b6daa002f1bf70ebdcf2b3bececc7ba74 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:31:20 +0800 Subject: [PATCH 05/16] =?UTF-8?q?feat:=20maven=20=E6=B5=8B=E9=80=9F?= =?UTF-8?q?=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/core.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/framework/core.c b/src/framework/core.c index ec6390f..c2715f7 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -80,7 +80,7 @@ bool chsrc_in_no_color_mode(){return ProgMode.NoColorMode;} static bool in_measure_mode(){return ProgMode.MeasureMode;} static bool in_ipv6_mode(){return ProgMode.Ipv6Mode;} static bool in_dry_run_mode(){return ProgMode.DryRunMode;} - +static bool in_custom_user_agent_mode(){return false;} /** * Target Group mode (相反则称为 standalone mode) @@ -603,20 +603,26 @@ measure_speed_for_url (void *url) ipv6 = "--ipv6"; } + char *user_agent = NULL; + if (in_custom_user_agent_mode()) + { + user_agent = strdup("maven/3.9.11"); + }else{ + user_agent = xy_2strjoin("chsrc/", Chsrc_Version); + } char *os_devnull = xy_os_devnull; /** * @note 我们用 —L,因为部分链接会跳转到其他地方,比如: RubyChina, npmmirror */ - char *curl_cmd = xy_strjoin (8, "curl -qsL ", ipv6, - " -o ", os_devnull, - " -w \"%{http_code} %{speed_download}\" -m", time_sec, - " -A chsrc/" Chsrc_Version " ", url); + char *curl_cmd = xy_strjoin (10, "curl -qsL ", ipv6, + " -o ", os_devnull, + " -w \"%{http_code} %{speed_download}\" -m", time_sec, + " -A ", user_agent, " ", url); // chsrc_info (xy_2strjoin ("测速命令 ", curl_cmd)); - char *curl_buf = xy_run (curl_cmd, 0); - + free(user_agent); return curl_buf; } @@ -1803,4 +1809,4 @@ chsrc_get_cpucore () #endif return cores; -} +} \ No newline at end of file From 1ea20097ada5540a3f1846dec36156149819bedb Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Thu, 21 Aug 2025 00:13:14 +0800 Subject: [PATCH 06/16] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E7=9A=84=20pl=5Fjava=5Ffind=5Fmaven=5Fhome=20and=20pl?= =?UTF-8?q?=5Fjava=5Fis=5Fhome?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加maven-daemon 和 mvnd 命令 --- README.md | 4 ++-- src/framework/core.c | 4 +++- src/recipe/lang/Java.c | 24 +++++++++++------------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 26b4cb5..a416395 100644 --- a/README.md +++ b/README.md @@ -461,7 +461,7 @@ chsrc set rust | cargo | crate chsrc set rustup chsrc set go -chsrc set java | maven | mvn | gradle +chsrc set java | maven | mvn | maven-daemon | mvnd | gradle chsrc set clojure | clojars chsrc set dart | pub chsrc set flutter @@ -582,4 +582,4 @@ chsrc set conda | anaconda [@Efterklang]: https://github.com/Efterklang [@wickdynex]: https://github.com/wickdynex [@YU-7]: https://github.com/YU-7 -[@sanchuanhehe]: https://github.com/sanchuanhehe +[@sanchuanhehe]: https://github.com/sanchuanhehe \ No newline at end of file diff --git a/src/framework/core.c b/src/framework/core.c index c2715f7..971e1a7 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -607,7 +607,9 @@ measure_speed_for_url (void *url) if (in_custom_user_agent_mode()) { user_agent = strdup("maven/3.9.11"); - }else{ + } + else + { user_agent = xy_2strjoin("chsrc/", Chsrc_Version); } char *os_devnull = xy_os_devnull; diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 8acb264..376a2fe 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -2,7 +2,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later * ------------------------------------------------------------*/ -def_target(pl_java, "java/maven/mvn/gradle"); +def_target(pl_java, "java/maven/mvn/maven-daemon/mvnd/gradle"); void pl_java_prelude () @@ -51,26 +51,26 @@ pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exi } bool -chef_is_home (const char *str) +pl_java_is_home (const char *str) { return (xy_str_start_with (str, "Maven home:")); } -char* -pl_java_find_maven_home (const char *source) +bool +pl_java_find_maven_home (const char *line) { - if(chef_is_home(source)) + if(pl_java_is_home(line)) { - char *maven_home = xy_str_delete_prefix (source, "Maven home: "); + return true; } + return false; } char * pl_java_find_maven_config () { - char *maven_home = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); - maven_home = xy_str_strip (maven_home); - + char *maven_home_line = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); + char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); return maven_config; } @@ -79,10 +79,8 @@ pl_java_find_maven_config () char * pl_java_find_maven_daemon_config () { - char *buf = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); - char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); - maven_home = xy_str_strip (maven_home); - + char *maven_home_line = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); + char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); return maven_config; } From f2a50d09636915dcc3aa99ab7a7374cc4e3fd4fb Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sat, 23 Aug 2025 12:58:23 +0800 Subject: [PATCH 07/16] feat: custom_user_agent --- lib/xy.h | 9 ++++++--- src/framework/core.c | 22 ++++++++-------------- src/recipe/lang/Java.c | 6 +++++- src/recipe/lang/Ruby/Ruby.c | 5 +++-- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/xy.h b/lib/xy.h index 50915bf..9a00e97 100644 --- a/lib/xy.h +++ b/lib/xy.h @@ -696,7 +696,7 @@ _xy_log_brkt (int level, const char *prompt1, const char *prompt2, const char *c * 由于目标行会被返回出来,所以 iter_func() 并不执行目标行,只会执行遍历过的行 */ static char * -xy_run_iter (const char *cmd, unsigned long n, void (*iter_func) (const char *)) +xy_run_iter (const char *cmd, unsigned long n, bool (*iter_func) (const char *)) { const int size = 512; char *buf = (char *) malloc (size); @@ -722,7 +722,10 @@ xy_run_iter (const char *cmd, unsigned long n, void (*iter_func) (const char * break; if (iter_func) { - iter_func (buf); + if (iter_func (buf)) { + pclose (stream); + return ret; + } } } @@ -927,4 +930,4 @@ xy_parent_dir (const char *path) return dir; } -#endif +#endif \ No newline at end of file diff --git a/src/framework/core.c b/src/framework/core.c index 971e1a7..56393d3 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -80,7 +80,6 @@ bool chsrc_in_no_color_mode(){return ProgMode.NoColorMode;} static bool in_measure_mode(){return ProgMode.MeasureMode;} static bool in_ipv6_mode(){return ProgMode.Ipv6Mode;} static bool in_dry_run_mode(){return ProgMode.DryRunMode;} -static bool in_custom_user_agent_mode(){return false;} /** * Target Group mode (相反则称为 standalone mode) @@ -132,7 +131,8 @@ ProgStatus = { .leader_selected_index = -1, .chgtype = ChgType_Auto, - .chsrc_run_faas = false + .chsrc_run_faas = false, + .user_agent = user_agent }; @@ -603,15 +603,6 @@ measure_speed_for_url (void *url) ipv6 = "--ipv6"; } - char *user_agent = NULL; - if (in_custom_user_agent_mode()) - { - user_agent = strdup("maven/3.9.11"); - } - else - { - user_agent = xy_2strjoin("chsrc/", Chsrc_Version); - } char *os_devnull = xy_os_devnull; /** @@ -620,11 +611,10 @@ measure_speed_for_url (void *url) char *curl_cmd = xy_strjoin (10, "curl -qsL ", ipv6, " -o ", os_devnull, " -w \"%{http_code} %{speed_download}\" -m", time_sec, - " -A ", user_agent, " ", url); + " -A ", ProgStatus.user_agent, " ", url); // chsrc_info (xy_2strjoin ("测速命令 ", curl_cmd)); char *curl_buf = xy_run (curl_cmd, 0); - free(user_agent); return curl_buf; } @@ -1077,7 +1067,11 @@ chsrc_determine_chgtype (ChgType_t type) ProgStatus.chgtype = chsrc_in_reset_mode() ? ChgType_Reset : type; } - +void +chsrc_custom_user_agent (*char user_agent) +{ + ProgStatus.user_agent = user_agent; +} #define MSG_EN_PUBLIC_URL "If the URL you specify is a public service, you are invited to contribute: chsrc issue" #define MSG_CN_PUBLIC_URL "若您指定的URL为公有服务,邀您参与贡献: chsrc issue" diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 376a2fe..91482b7 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -104,6 +104,10 @@ pl_java_getsrc (char *option) } +void use_custom_user_agent() { + chsrc_custom_user_agent("Maven/3.9.11") +} + /** * @consult https://developer.aliyun.com/mirror/maven */ @@ -114,7 +118,7 @@ pl_java_setsrc (char *option) pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); use_this_source(pl_java); - + use_custom_user_agent(); if (maven_exist) { char *file = xy_str_gsub (RAWSTR_pl_java_maven_config, "@1@", source.mirror->code); diff --git a/src/recipe/lang/Ruby/Ruby.c b/src/recipe/lang/Ruby/Ruby.c index b24cef5..d3b2643 100644 --- a/src/recipe/lang/Ruby/Ruby.c +++ b/src/recipe/lang/Ruby/Ruby.c @@ -52,7 +52,7 @@ pl_ruby_getsrc (char *option) chsrc_run ("bundle config get mirror.https://rubygems.org", RunOpt_Default); } -void +bool pl_ruby_remove_gem_source (const char *source) { char *cmd = NULL; @@ -61,6 +61,7 @@ pl_ruby_remove_gem_source (const char *source) cmd = xy_2strjoin ("gem sources -r ", source); chsrc_run (cmd, RunOpt_Default); } + return false } /** @@ -105,4 +106,4 @@ void pl_ruby_resetsrc (char *option) { pl_ruby_setsrc (option); -} +} \ No newline at end of file From 6a89e419347f4dce9b340b0475939d8d2cc43b52 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sat, 23 Aug 2025 13:14:28 +0800 Subject: [PATCH 08/16] fix: user_agent --- src/framework/core.c | 5 +++-- src/recipe/lang/Java.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/framework/core.c b/src/framework/core.c index 56393d3..41eff2f 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -126,13 +126,14 @@ struct /* 此时 chsrc_run() 不再是recipe中指定要运行的一个外部命令,而是作为一个功能实现的支撑 */ bool chsrc_run_faas; + char *user_agent; } ProgStatus = { .leader_selected_index = -1, .chgtype = ChgType_Auto, .chsrc_run_faas = false, - .user_agent = user_agent + .user_agent = NULL; }; @@ -1068,7 +1069,7 @@ chsrc_determine_chgtype (ChgType_t type) } void -chsrc_custom_user_agent (*char user_agent) +chsrc_custom_user_agent (char *user_agent) { ProgStatus.user_agent = user_agent; } diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 91482b7..a6e2f28 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -105,7 +105,7 @@ pl_java_getsrc (char *option) void use_custom_user_agent() { - chsrc_custom_user_agent("Maven/3.9.11") + chsrc_custom_user_agent("Maven/3.9.11"); } /** From 645a3d6bf1ebedda772f81c1795cf7766ec2ca25 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sat, 23 Aug 2025 13:28:11 +0800 Subject: [PATCH 09/16] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8xy=5Frun=5Fcapt?= =?UTF-8?q?ure=20=E9=98=B2=E6=AD=A2=E6=9F=A5=E6=89=BE=E4=B8=8D=E5=88=B0mav?= =?UTF-8?q?en=20home=20=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recipe/lang/Java.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index a6e2f28..c3fd705 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -69,20 +69,40 @@ pl_java_find_maven_home (const char *line) char * pl_java_find_maven_config () { - char *maven_home_line = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); - char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); - char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); - return maven_config; + char *output; + int status = xy_run_capture ("mvn -v", &output); + if (0==status) + { + char *maven_home_line = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); + char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); + char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return maven_config; + } + else + { + printf("no maven home"); + } + return "~/.m2/settings.xml"; } char * pl_java_find_maven_daemon_config () { - char *maven_home_line = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); - char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); - char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); - return maven_config; + char *output; + int status = xy_run_capture ("mvnd -v", &output); + if (0==status) + { + char *maven_home_line = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); + char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); + char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return maven_config; + } + else + { + printf ("no maven home"); + } + return "~/.m2/settings.xml"; } From c872c9122d6c177411061ad7ee196fc14a2e8bb8 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sat, 23 Aug 2025 14:50:03 +0800 Subject: [PATCH 10/16] =?UTF-8?q?fix:=20=E5=90=88=E5=B9=B6=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/core.c | 8 ++++---- src/recipe/lang/Java.c | 10 +++++----- src/recipe/lang/Ruby/Ruby.c | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/framework/core.c b/src/framework/core.c index 2b343a6..d548b2c 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -133,8 +133,8 @@ ProgStatus = .leader_selected_index = -1, .chgtype = ChgType_Auto, .chsrc_run_faas = false, - .user_agent = NULL; -}; + .user_agent = NULL +} /* Global Program Store */ @@ -643,11 +643,11 @@ measure_speed_for_url (void *url) /** * @note 我们用 —L,因为部分链接会跳转到其他地方,比如: RubyChina, npmmirror */ - char *curl_cmd = #xy_strcat (8, "curl -qsL ", ipv6, + char *curl_cmd = xy_strcat (8, "curl -qsL ", ipv6, " -o ", os_devnull, " -w \"%{http_code} %{speed_download}\" -m", time_sec, " -A ", ProgStatus.user_agent, " ", url); - + // chsrc_info (xy_2strjoin ("测速命令 ", curl_cmd)); char *curl_buf = xy_run (curl_cmd, 0); return curl_buf; diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index c374948..5394193 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -72,7 +72,7 @@ pl_java_find_maven_config () { char *maven_home_line = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); - char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + char *maven_config = xy_normalize_path (xy_2strcat (maven_home, "/conf/settings.xml")); return maven_config; } else @@ -91,7 +91,7 @@ pl_java_find_maven_daemon_config () { char *maven_home_line = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); - char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + char *maven_config = xy_normalize_path (xy_2strcat (maven_home, "/conf/settings.xml")); return maven_config; } else @@ -110,12 +110,12 @@ pl_java_getsrc (char *option) if (maven_exist) { char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_2strcat ("请查看 ", maven_config)); + chsrc_note2 (xy_strcat ("请查看 ", maven_config)); } if(maven_daemon_exist) { char *maven_config = pl_java_find_maven_daemon_config (); - chsrc_note2 (xy_2strcat ("请查看 ", maven_config)); + chsrc_note2 (xy_strcat ("请查看 ", maven_config)); } } @@ -151,7 +151,7 @@ pl_java_setsrc (char *option) file = xy_str_gsub (file, "@name@", source.mirror->name); file = xy_str_gsub (file, "@url@", source.url); char *maven_config = pl_java_find_maven_daemon_config (); - chsrc_note2 (xy_strjoin (3, "请在 maven 配置文件 ", maven_config, " 中添加:")); + chsrc_note2 (xy_strcat (3, "请在 maven 配置文件 ", maven_config, " 中添加:")); println (file); } diff --git a/src/recipe/lang/Ruby/Ruby.c b/src/recipe/lang/Ruby/Ruby.c index 074201f..5f23bff 100644 --- a/src/recipe/lang/Ruby/Ruby.c +++ b/src/recipe/lang/Ruby/Ruby.c @@ -59,7 +59,7 @@ pl_ruby_remove_gem_source (const char *source) cmd = xy_2strcat ("gem sources -r ", source); chsrc_run (cmd, RunOpt_Default); } - return false + return false; } /** From 51863e7808921f88d411cc0a630ef526e92fa6da Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sun, 24 Aug 2025 15:37:59 +0800 Subject: [PATCH 11/16] fix: error --- src/framework/core.c | 5 +++-- src/recipe/lang/Java.c | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/framework/core.c b/src/framework/core.c index d548b2c..f3f2979 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -81,6 +81,7 @@ static bool in_measure_mode(){return ProgMode.MeasureMode;} static bool in_ipv6_mode(){return ProgMode.Ipv6Mode;} static bool in_dry_run_mode(){return ProgMode.DryRunMode;} + /** * Target Group mode (相反则称为 standalone mode) * @@ -133,8 +134,8 @@ ProgStatus = .leader_selected_index = -1, .chgtype = ChgType_Auto, .chsrc_run_faas = false, - .user_agent = NULL -} + .user_agent = NULL, +}; /* Global Program Store */ diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 5394193..c019ed6 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -70,7 +70,7 @@ pl_java_find_maven_config () int status = xy_run_capture ("mvn -v", &output); if (0==status) { - char *maven_home_line = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); + char *maven_home_line = xy_run_iter_lines ("mvn -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); char *maven_config = xy_normalize_path (xy_2strcat (maven_home, "/conf/settings.xml")); return maven_config; @@ -89,7 +89,7 @@ pl_java_find_maven_daemon_config () int status = xy_run_capture ("mvnd -v", &output); if (0==status) { - char *maven_home_line = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); + char *maven_home_line = xy_run_iter_lines ("mvnd -v", 0, pl_java_find_maven_home); char *maven_home = xy_str_delete_prefix (maven_home_line, "Maven home: "); char *maven_config = xy_normalize_path (xy_2strcat (maven_home, "/conf/settings.xml")); return maven_config; @@ -110,12 +110,12 @@ pl_java_getsrc (char *option) if (maven_exist) { char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_strcat ("请查看 ", maven_config)); + chsrc_note2 (xy_2strcat ("请查看 ", maven_config)); } if(maven_daemon_exist) { char *maven_config = pl_java_find_maven_daemon_config (); - chsrc_note2 (xy_strcat ("请查看 ", maven_config)); + chsrc_note2 (xy_2strcat ("请查看 ", maven_config)); } } From ac50bd24cb932bbf5ffe4b557416015559e1e784 Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Sun, 24 Aug 2025 15:49:20 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=20=E6=9B=B4=E5=A5=BD=E7=9A=84=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recipe/lang/Java.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index c019ed6..d2f86a7 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -38,7 +38,7 @@ pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exi { *maven_exist = chsrc_check_program ("mvn"); *gradle_exist = chsrc_check_program ("gradle"); - *gradle_exist = chsrc_check_program ("mvnd"); + *maven_daemon_exist = chsrc_check_program ("mvnd"); if (! *maven_exist && ! *gradle_exist && ! *maven_daemon_exist) { @@ -77,7 +77,7 @@ pl_java_find_maven_config () } else { - printf("no maven home"); + printf("no find maven home\n"); } return "~/.m2/settings.xml"; } @@ -96,7 +96,7 @@ pl_java_find_maven_daemon_config () } else { - printf ("no maven home"); + printf ("no find maven home\n"); } return "~/.m2/settings.xml"; } From 7c9e351fc5a095a2cfc5d6d4da9f28a74a5e613b Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:05:03 +0800 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20=E8=AE=BE=E7=BD=AEuser=5Fagent=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=98=BF=E9=87=8C=E4=BA=91=20=E6=B5=8B?= =?UTF-8?q?=E9=80=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/core.c | 6 +++--- src/recipe/lang/Java.c | 11 +++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/framework/core.c b/src/framework/core.c index f3f2979..e91e833 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -134,7 +134,7 @@ ProgStatus = .leader_selected_index = -1, .chgtype = ChgType_Auto, .chsrc_run_faas = false, - .user_agent = NULL, + .user_agent = "chsrc", }; @@ -644,12 +644,12 @@ measure_speed_for_url (void *url) /** * @note 我们用 —L,因为部分链接会跳转到其他地方,比如: RubyChina, npmmirror */ - char *curl_cmd = xy_strcat (8, "curl -qsL ", ipv6, + char *curl_cmd = xy_strcat (10, "curl -qsL ", ipv6, " -o ", os_devnull, " -w \"%{http_code} %{speed_download}\" -m", time_sec, " -A ", ProgStatus.user_agent, " ", url); - // chsrc_info (xy_2strjoin ("测速命令 ", curl_cmd)); + // chsrc_note2 (xy_2strcat ("测速命令 ", curl_cmd)); char *curl_buf = xy_run (curl_cmd, 0); return curl_buf; } diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index d2f86a7..6722406 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -4,6 +4,11 @@ def_target(pl_java, "java/maven/mvn/maven-daemon/mvnd/gradle"); + +void use_custom_user_agent() { + chsrc_custom_user_agent("Maven/3.9.11"); +} + void pl_java_prelude () { @@ -20,10 +25,11 @@ pl_java_prelude () chef_allow_local_mode (this, CanNot, NULL, NULL); chef_forbid_english(this); chef_allow_user_define(this); + use_custom_user_agent(); def_sources_begin() {&UpstreamProvider, "https://repo1.maven.org/maven2/", DelegateToUpstream}, - {&Ali, "https://maven.aliyun.com/repository/public/", DelegateToMirror}, + {&Ali, "https://maven.aliyun.com/repository/public/", "https://maven.aliyun.com/repository/public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/", "https://mirrors.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, {&HuaweiCdn, "https://repo.huaweicloud.com/repository/maven/", "https://repo.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, {&Tencent, "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/", "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar"}, @@ -120,9 +126,6 @@ pl_java_getsrc (char *option) } -void use_custom_user_agent() { - chsrc_custom_user_agent("Maven/3.9.11"); -} /** * @consult https://developer.aliyun.com/mirror/maven From 8b4504fc07858bd422fdcf073c264e20702cc2c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E5=BD=A6=E7=B3=96?= <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:59:27 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20core.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为user_agent设置正确的默认值 --- src/framework/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/framework/core.c b/src/framework/core.c index e91e833..34ae184 100644 --- a/src/framework/core.c +++ b/src/framework/core.c @@ -134,7 +134,7 @@ ProgStatus = .leader_selected_index = -1, .chgtype = ChgType_Auto, .chsrc_run_faas = false, - .user_agent = "chsrc", + .user_agent = "chsrc/" Chsrc_Version, }; From 49e15b1584544e75b40ba936a2dd6819e34ad824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E5=BD=A6=E7=B3=96?= <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:01:08 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Java.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 避免额外的函数定义 --- src/recipe/lang/Java.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 6722406..c67f27c 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -4,11 +4,6 @@ def_target(pl_java, "java/maven/mvn/maven-daemon/mvnd/gradle"); - -void use_custom_user_agent() { - chsrc_custom_user_agent("Maven/3.9.11"); -} - void pl_java_prelude () { @@ -25,7 +20,7 @@ pl_java_prelude () chef_allow_local_mode (this, CanNot, NULL, NULL); chef_forbid_english(this); chef_allow_user_define(this); - use_custom_user_agent(); + chsrc_custom_user_agent("Maven/3.9.11"); def_sources_begin() {&UpstreamProvider, "https://repo1.maven.org/maven2/", DelegateToUpstream}, From b98a616bcd911ec08149908ca8bd69a97cc8076b Mon Sep 17 00:00:00 2001 From: BingChunMoLi <44092516+BingChunMoLi@users.noreply.github.com> Date: Tue, 26 Aug 2025 19:37:23 +0800 Subject: [PATCH 16/16] =?UTF-8?q?fix:=20=E6=89=8B=E6=9C=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=81=97=E7=95=99=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/recipe/lang/Java.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index c67f27c..05216b0 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -132,7 +132,6 @@ pl_java_setsrc (char *option) pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); chsrc_use_this_source(pl_java); - use_custom_user_agent(); if (maven_exist) { char *file = xy_str_gsub (RAWSTR_pl_java_maven_config, "@1@", source.mirror->code);