mirror of
https://github.com/RubyMetric/chsrc
synced 2026-10-25 17:36:32 +08:00
压缩 py 前缀
This commit is contained in:
10 files changed
+109
-109
No files matched your search
@@ -2,12 +2,12 @@
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
def_target(pl_python_pdm, "pdm");
|
||||
def_target(pl_py_pdm, "pdm");
|
||||
|
||||
void
|
||||
pl_python_pdm_prelude (void)
|
||||
pl_py_pdm_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_pdm, gsr);
|
||||
chef_prep_this (pl_py_pdm, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2024-06-05");
|
||||
chef_set_recipe_last_updated (this, "2025-07-11");
|
||||
@@ -23,12 +23,12 @@ pl_python_pdm_prelude (void)
|
||||
chef_allow_english(this);
|
||||
chef_allow_user_define(this);
|
||||
|
||||
chef_use_other_target_sources (this, &pl_python_group_target);
|
||||
chef_use_other_target_sources (this, &pl_py_group_target);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
pl_python_pdm_getsrc (char *option)
|
||||
pl_py_pdm_getsrc (char *option)
|
||||
{
|
||||
// @HELP 不加 --global 时,会检测到本项目的配置吗?
|
||||
// 如果不行的话,就要分别改成 --global 和 --local
|
||||
@@ -41,9 +41,9 @@ pl_python_pdm_getsrc (char *option)
|
||||
* @consult https://github.com/RubyMetric/chsrc/issues/19
|
||||
*/
|
||||
void
|
||||
pl_python_pdm_setsrc (char *option)
|
||||
pl_py_pdm_setsrc (char *option)
|
||||
{
|
||||
Source_t source = chsrc_yield_source (&pl_python_group_target, option);
|
||||
Source_t source = chsrc_yield_source (&pl_py_group_target, option);
|
||||
if (chsrc_in_standalone_mode())
|
||||
chsrc_confirm_source(&source);
|
||||
|
||||
@@ -64,7 +64,7 @@ pl_python_pdm_setsrc (char *option)
|
||||
}
|
||||
|
||||
void
|
||||
pl_python_pdm_resetsrc (char *option)
|
||||
pl_py_pdm_resetsrc (char *option)
|
||||
{
|
||||
pl_python_pdm_setsrc (option);
|
||||
pl_py_pdm_setsrc (option);
|
||||
}
|
||||
@@ -2,12 +2,12 @@
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
def_target(pl_python_poetry, "poetry");
|
||||
def_target(pl_py_poetry, "poetry");
|
||||
|
||||
void
|
||||
pl_python_poetry_prelude (void)
|
||||
pl_py_poetry_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_poetry, gsr);
|
||||
chef_prep_this (pl_py_poetry, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2024-08-08");
|
||||
chef_set_recipe_last_updated (this, "2025-07-11");
|
||||
@@ -24,11 +24,11 @@ pl_python_poetry_prelude (void)
|
||||
chef_allow_english(this);
|
||||
chef_allow_user_define(this);
|
||||
|
||||
chef_use_other_target_sources (this, &pl_python_group_target);
|
||||
chef_use_other_target_sources (this, &pl_py_group_target);
|
||||
}
|
||||
|
||||
void
|
||||
pl_python_poetry_getsrc (char *option)
|
||||
pl_py_poetry_getsrc (char *option)
|
||||
{
|
||||
chsrc_note2 ("poetry换源情况: 请查看本项目 pyproject.toml 中 [[tool.poetry.source]]");
|
||||
}
|
||||
@@ -38,9 +38,9 @@ pl_python_poetry_getsrc (char *option)
|
||||
* @consult https://python-poetry.org/docs/repositories/#project-configuration
|
||||
*/
|
||||
void
|
||||
pl_python_poetry_setsrc (char *option)
|
||||
pl_py_poetry_setsrc (char *option)
|
||||
{
|
||||
Source_t source = chsrc_yield_source (&pl_python_group_target, option);
|
||||
Source_t source = chsrc_yield_source (&pl_py_group_target, option);
|
||||
if (chsrc_in_standalone_mode())
|
||||
chsrc_confirm_source(&source);
|
||||
|
||||
@@ -56,7 +56,7 @@ pl_python_poetry_setsrc (char *option)
|
||||
|
||||
|
||||
void
|
||||
pl_python_poetry_resetsrc (char *option)
|
||||
pl_py_poetry_resetsrc (char *option)
|
||||
{
|
||||
pl_python_poetry_setsrc (option);
|
||||
pl_py_poetry_setsrc (option);
|
||||
}
|
||||
@@ -9,38 +9,38 @@
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
void
|
||||
pl_python_group_getsrc (char *option)
|
||||
pl_py_group_getsrc (char *option)
|
||||
{
|
||||
bool pdm_exist = false,
|
||||
poetry_exist = false,
|
||||
uv_exist = false;
|
||||
|
||||
pl_python_check_unofficial_pkger (&poetry_exist, &pdm_exist, &uv_exist);
|
||||
pl_py_check_unofficial_pkger (&poetry_exist, &pdm_exist, &uv_exist);
|
||||
|
||||
// 交给后面检查命令的存在性
|
||||
pl_python_pip_getsrc (option);
|
||||
pl_py_pip_getsrc (option);
|
||||
br();
|
||||
|
||||
if (poetry_exist)
|
||||
{
|
||||
pl_python_poetry_getsrc (option);
|
||||
pl_py_poetry_getsrc (option);
|
||||
br();
|
||||
}
|
||||
|
||||
if (pdm_exist)
|
||||
{
|
||||
pl_python_pdm_getsrc (option);
|
||||
pl_py_pdm_getsrc (option);
|
||||
}
|
||||
|
||||
if (uv_exist)
|
||||
{
|
||||
pl_python_uv_getsrc (option);
|
||||
pl_py_uv_getsrc (option);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
pl_python_group_setsrc (char *option)
|
||||
pl_py_group_setsrc (char *option)
|
||||
{
|
||||
{
|
||||
char *msg = ENGLISH ? "Three package managers will be replaced for you at the same time: "
|
||||
@@ -54,31 +54,31 @@ pl_python_group_setsrc (char *option)
|
||||
poetry_exist = false,
|
||||
uv_exist = false;
|
||||
|
||||
pl_python_check_unofficial_pkger (&poetry_exist, &pdm_exist, &uv_exist);
|
||||
pl_py_check_unofficial_pkger (&poetry_exist, &pdm_exist, &uv_exist);
|
||||
|
||||
chsrc_set_target_group_mode ();
|
||||
|
||||
chsrc_use_this_source (pl_python_group);
|
||||
chsrc_use_this_source (pl_py_group);
|
||||
|
||||
|
||||
// 交给后面检查命令的存在性
|
||||
pl_python_pip_setsrc (option);
|
||||
pl_py_pip_setsrc (option);
|
||||
br();
|
||||
|
||||
if (poetry_exist)
|
||||
{
|
||||
pl_python_poetry_setsrc (option);
|
||||
pl_py_poetry_setsrc (option);
|
||||
br();
|
||||
}
|
||||
|
||||
if (pdm_exist)
|
||||
{
|
||||
pl_python_pdm_setsrc (option);
|
||||
pl_py_pdm_setsrc (option);
|
||||
}
|
||||
|
||||
if (uv_exist)
|
||||
{
|
||||
pl_python_uv_setsrc (option);
|
||||
pl_py_uv_setsrc (option);
|
||||
}
|
||||
|
||||
chsrc_determine_chgtype (ChgType_Auto);
|
||||
@@ -87,7 +87,7 @@ pl_python_group_setsrc (char *option)
|
||||
|
||||
|
||||
void
|
||||
pl_python_group_resetsrc (char *option)
|
||||
pl_py_group_resetsrc (char *option)
|
||||
{
|
||||
pl_python_group_setsrc (option);
|
||||
pl_py_group_setsrc (option);
|
||||
}
|
||||
@@ -4,12 +4,12 @@
|
||||
* 由于Rye已经有后继uv了,所以我们不把该管理器纳入Python group中
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
def_target(pl_python_rye, "rye");
|
||||
def_target(pl_py_rye, "rye");
|
||||
|
||||
void
|
||||
pl_python_rye_prelude (void)
|
||||
pl_py_rye_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_rye, gsr);
|
||||
chef_prep_this (pl_py_rye, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2024-12-06");
|
||||
chef_set_recipe_last_updated (this, "2025-08-09");
|
||||
@@ -25,7 +25,7 @@ pl_python_rye_prelude (void)
|
||||
chef_allow_english(this);
|
||||
chef_allow_user_define(this);
|
||||
|
||||
chef_use_other_target_sources (this, &pl_python_group_target);
|
||||
chef_use_other_target_sources (this, &pl_py_group_target);
|
||||
}
|
||||
|
||||
char *
|
||||
@@ -40,7 +40,7 @@ pl_python_find_rye_config ()
|
||||
|
||||
|
||||
void
|
||||
pl_python_rye_getsrc (char *option)
|
||||
pl_py_rye_getsrc (char *option)
|
||||
{
|
||||
char *rye_config = pl_python_find_rye_config ();
|
||||
chsrc_note2 (xy_strcat (3, "请查看 ", rye_config, " 配置文件中的 [[sources]] 节内容"));
|
||||
@@ -51,12 +51,12 @@ pl_python_rye_getsrc (char *option)
|
||||
* @consult https://github.com/RubyMetric/chsrc/issues/127
|
||||
*/
|
||||
void
|
||||
pl_python_rye_setsrc (char *option)
|
||||
pl_py_rye_setsrc (char *option)
|
||||
{
|
||||
/* 并不在 Python group 中,所以不考虑 target group 情况,仅使用 Python group 提供的源 */
|
||||
Source_t source = chsrc_yield_source_and_confirm (&pl_python_group_target, option);
|
||||
Source_t source = chsrc_yield_source_and_confirm (&pl_py_group_target, option);
|
||||
|
||||
const char *content = RAWSTR_pl_python_rye_config;
|
||||
const char *content = RAWSTR_pl_py_rye_config;
|
||||
|
||||
content = xy_str_gsub (content, "@1@", source.mirror->abbr);
|
||||
content = xy_str_gsub (content, "@2@", source.url);
|
||||
@@ -71,7 +71,7 @@ pl_python_rye_setsrc (char *option)
|
||||
|
||||
|
||||
void
|
||||
pl_python_rye_resetsrc (char *option)
|
||||
pl_py_rye_resetsrc (char *option)
|
||||
{
|
||||
pl_python_rye_setsrc (option);
|
||||
pl_py_rye_setsrc (option);
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "rawstr4c.h"
|
||||
|
||||
def_target(pl_python_group, "python/pypi/py");
|
||||
def_target(pl_py_group, "python/pypi/py");
|
||||
|
||||
/**
|
||||
* @note 测速链接的这个前缀是 ${host}/pipi/web/pacakges/56/e4....
|
||||
@@ -16,7 +16,7 @@ def_target(pl_python_group, "python/pypi/py");
|
||||
* 实际文件仍位于 /pypi-packages,需要特殊处理
|
||||
*/
|
||||
static char *
|
||||
pl_python_speed_url_constructor (const char *url, const char *user_data)
|
||||
pl_py_speed_url_constructor (const char *url, const char *user_data)
|
||||
{
|
||||
char *str = xy_str_delete_suffix (url, "/simple");
|
||||
str = xy_2strcat (str, "/packages/fa/80/eb88edc2e2b11cd2dd2e56f1c80b5784d11d6e6b7f04a1145df64df40065/opencv_python-4.12.0.88-cp37-abi3-win_amd64.whl");
|
||||
@@ -29,9 +29,9 @@ pl_python_speed_url_constructor (const char *url, const char *user_data)
|
||||
|
||||
|
||||
void
|
||||
pl_python_group_prelude (void)
|
||||
pl_py_group_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_group, gsr);
|
||||
chef_prep_this (pl_py_group, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2023-09-03");
|
||||
chef_set_recipe_last_updated (this, "2026-08-01");
|
||||
@@ -75,11 +75,11 @@ pl_python_group_prelude (void)
|
||||
// {&Netease, "https://mirrors.163.com/.help/pypi.html", NULL}
|
||||
def_sources_end()
|
||||
|
||||
chef_set_rest_smURL_with_func (this, pl_python_speed_url_constructor, NULL);
|
||||
chef_set_rest_smURL_with_func (this, pl_py_speed_url_constructor, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
pl_python_check_unofficial_pkger (bool *poetry_exist, bool *pdm_exist, bool *uv_exist)
|
||||
pl_py_check_unofficial_pkger (bool *poetry_exist, bool *pdm_exist, bool *uv_exist)
|
||||
{
|
||||
*poetry_exist = chsrc_check_program ("poetry");
|
||||
*pdm_exist = chsrc_check_program ("pdm");
|
||||
@@ -91,7 +91,7 @@ pl_python_check_unofficial_pkger (bool *poetry_exist, bool *pdm_exist, bool *uv_
|
||||
* @param[out] prog_name 返回 Python 的可用名,如果不可用,则返回 NULL
|
||||
*/
|
||||
void
|
||||
pl_python_get_py_program_name (char **prog_name)
|
||||
pl_py_get_python_program_name (char **prog_name)
|
||||
{
|
||||
*prog_name = NULL;
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
def_target(pl_python_pip, "pip");
|
||||
def_target(pl_py_pip, "pip");
|
||||
|
||||
void
|
||||
pl_python_pip_prelude (void)
|
||||
pl_py_pip_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_pip, gsr);
|
||||
chef_prep_this (pl_py_pip, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2023-09-03");
|
||||
chef_set_recipe_last_updated (this, "2025-09-12");
|
||||
@@ -23,15 +23,15 @@ pl_python_pip_prelude (void)
|
||||
chef_allow_english(this);
|
||||
chef_allow_user_define(this);
|
||||
|
||||
chef_use_other_target_sources (this, &pl_python_group_target);
|
||||
chef_use_other_target_sources (this, &pl_py_group_target);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
pl_python_pip_getsrc (char *option)
|
||||
pl_py_pip_getsrc (char *option)
|
||||
{
|
||||
char *py_prog_name = NULL;
|
||||
pl_python_get_py_program_name (&py_prog_name);
|
||||
pl_py_get_python_program_name (&py_prog_name);
|
||||
|
||||
char *cmd = xy_2strcat (py_prog_name, " -m pip config get global.index-url");
|
||||
|
||||
@@ -49,7 +49,7 @@ pl_python_pip_getsrc (char *option)
|
||||
else
|
||||
chsrc_note2 ("pip 中未配置源,显示默认上游源:");
|
||||
|
||||
Source_t default_source = chsrc_yield_source (&pl_python_group_target, "upstream");
|
||||
Source_t default_source = chsrc_yield_source (&pl_py_group_target, "upstream");
|
||||
say (default_source.url);
|
||||
}
|
||||
}
|
||||
@@ -59,7 +59,7 @@ pl_python_pip_getsrc (char *option)
|
||||
* @consult https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
|
||||
*/
|
||||
void
|
||||
pl_python_pip_setsrc (char *option)
|
||||
pl_py_pip_setsrc (char *option)
|
||||
{
|
||||
// 对于不支持的情况,尽早结束
|
||||
if (chsrc_in_project_scope_mode())
|
||||
@@ -71,12 +71,12 @@ pl_python_pip_setsrc (char *option)
|
||||
return;
|
||||
}
|
||||
|
||||
Source_t source = chsrc_yield_source (&pl_python_group_target, option);
|
||||
Source_t source = chsrc_yield_source (&pl_py_group_target, option);
|
||||
if (chsrc_in_standalone_mode())
|
||||
chsrc_confirm_source(&source);
|
||||
|
||||
char *py_prog_name = NULL;
|
||||
pl_python_get_py_program_name (&py_prog_name);
|
||||
pl_py_get_python_program_name (&py_prog_name);
|
||||
|
||||
// 这里用的是 config --user,会写入用户目录(而不是项目目录)
|
||||
// https://github.com/RubyMetric/chsrc/issues/39
|
||||
@@ -93,7 +93,7 @@ pl_python_pip_setsrc (char *option)
|
||||
|
||||
|
||||
void
|
||||
pl_python_pip_resetsrc (char *option)
|
||||
pl_py_pip_resetsrc (char *option)
|
||||
{
|
||||
pl_python_pip_setsrc (option);
|
||||
pl_py_pip_setsrc (option);
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
* Generated by rawstr4c v1.1.0-2025/09/27
|
||||
*/
|
||||
|
||||
char RAWSTR_pl_python_uv_config_source_content[] = "\x5b\x5b\x69\x6e\x64\x65\x78\x5d\x5d\x0a\x75\x72\x6c\x20\x3d\x20\x22\x40\x75\x72\x6c\x40\x22\x0a\x64\x65\x66\x61\x75\x6c\x74\x20\x3d\x20\x74\x72\x75\x65\x0a";
|
||||
char RAWSTR_pl_py_uv_config_source_content[] = "\x5b\x5b\x69\x6e\x64\x65\x78\x5d\x5d\x0a\x75\x72\x6c\x20\x3d\x20\x22\x40\x75\x72\x6c\x40\x22\x0a\x64\x65\x66\x61\x75\x6c\x74\x20\x3d\x20\x74\x72\x75\x65\x0a";
|
||||
|
||||
char RAWSTR_pl_python_get_uv_config[] = "\x67\x72\x65\x70\x20\x2d\x41\x20\x32\x20\x27\x69\x6e\x64\x65\x78\x27\x20\x40\x66\x40\x20\x7c\x20\x73\x65\x64\x20\x2d\x6e\x20\x27\x73\x2f\x5e\x75\x72\x6c\x20\x3d\x20\x22\x5c\x28\x2e\x2a\x5c\x29\x22\x2f\x5c\x31\x2f\x70\x27";
|
||||
|
||||
@@ -18,5 +18,5 @@ char RAWSTR_pl_python_test_uv_if_set_source[] = "\x67\x72\x65\x70\x20\x2d\x71\x2
|
||||
|
||||
char RAWSTR_pl_python_test_uv_if_set_source_on_windows[] = "\x70\x6f\x77\x65\x72\x73\x68\x65\x6c\x6c\x20\x2d\x43\x6f\x6d\x6d\x61\x6e\x64\x20\x22\x69\x66\x20\x28\x47\x65\x74\x2d\x43\x6f\x6e\x74\x65\x6e\x74\x20\x40\x66\x40\x20\x7c\x20\x53\x65\x6c\x65\x63\x74\x2d\x53\x74\x72\x69\x6e\x67\x20\x27\x5e\x5c\x5b\x5c\x5b\x69\x6e\x64\x65\x78\x5c\x5d\x5c\x5d\x24\x27\x29\x20\x7b\x20\x65\x78\x69\x74\x20\x30\x20\x7d\x20\x65\x6c\x73\x65\x20\x7b\x20\x65\x78\x69\x74\x20\x31\x20\x7d\x22";
|
||||
|
||||
char RAWSTR_pl_python_rye_config[] = "\x5b\x5b\x73\x6f\x75\x72\x63\x65\x73\x5d\x5d\x0a\x6e\x61\x6d\x65\x20\x3d\x20\x22\x40\x31\x40\x22\x0a\x75\x72\x6c\x20\x20\x3d\x20\x22\x40\x32\x40\x22";
|
||||
char RAWSTR_pl_py_rye_config[] = "\x5b\x5b\x73\x6f\x75\x72\x63\x65\x73\x5d\x5d\x0a\x6e\x61\x6d\x65\x20\x3d\x20\x22\x40\x31\x40\x22\x0a\x75\x72\x6c\x20\x20\x3d\x20\x22\x40\x32\x40\x22";
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
# rawstr4c input for Python
|
||||
|
||||
- prefix = `RAWSTR_pl_python`
|
||||
- prefix = `RAWSTR_pl_py`
|
||||
- output = `:global-variable-only-header`
|
||||
- translate = `:hex`
|
||||
- no-postfix = `true`
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
* ------------------------------------------------------------*/
|
||||
|
||||
def_target(pl_python_uv, "uv");
|
||||
def_target(pl_py_uv, "uv");
|
||||
|
||||
#include "uv-helper.c"
|
||||
#include "uv-python-build.c"
|
||||
|
||||
// 调整 `python-install-mirror` 相关配置应在 `uv-python-build.c` 中修改,本处仅为 uv 最常用的 `pypi` 镜像配置。
|
||||
void
|
||||
pl_python_uv_prelude (void)
|
||||
pl_py_uv_prelude (void)
|
||||
{
|
||||
chef_prep_this (pl_python_uv, gsr);
|
||||
chef_prep_this (pl_py_uv, gsr);
|
||||
|
||||
chef_set_recipe_created_on (this, "2024-12-11");
|
||||
chef_set_recipe_last_updated (this, "2026-08-11");
|
||||
@@ -27,7 +27,7 @@ pl_python_uv_prelude (void)
|
||||
chef_allow_english(this);
|
||||
chef_allow_user_define(this);
|
||||
|
||||
chef_use_other_target_sources (this, &pl_python_group_target);
|
||||
chef_use_other_target_sources (this, &pl_py_group_target);
|
||||
|
||||
// 挂载 源target
|
||||
chef_set_preludefn_for_sources_target (pl_py_uv_python_build);
|
||||
@@ -48,21 +48,21 @@ pl_python_uv_prelude (void)
|
||||
* Unix 用户配置目录优先使用 $XDG_CONFIG_HOME/uv,未设置时回退到 ~/.config/uv。
|
||||
*/
|
||||
|
||||
#define PL_Python_uv_ConfigFile "uv.toml"
|
||||
#define PL_Python_uv_PyprojectConfigFile "pyproject.toml"
|
||||
#define pl_py_uv_ConfigFile "uv.toml"
|
||||
#define pl_py_uv_PyprojectConfigFile "pyproject.toml"
|
||||
// 注意: 不能以 "./" 开头 —— Windows 上 chsrc_backup 的 copy 命令无法处理
|
||||
#define PL_Python_uv_Local_ConfigPath ""
|
||||
#define PL_Python_uv_User_ConfigPath "~/.config"
|
||||
#define pl_py_uv_Local_ConfigPath ""
|
||||
#define pl_py_uv_User_ConfigPath "~/.config"
|
||||
|
||||
static const char *
|
||||
pl_python_uv_user_config_path (void)
|
||||
pl_py_uv_user_config_path (void)
|
||||
{
|
||||
const char *xdg = getenv ("XDG_CONFIG_HOME");
|
||||
return (xdg && *xdg) ? xdg : PL_Python_uv_User_ConfigPath;
|
||||
return (xdg && *xdg) ? xdg : pl_py_uv_User_ConfigPath;
|
||||
}
|
||||
|
||||
static Source_t
|
||||
pl_python_uv_yield_target_source (Target_t *target, char *option)
|
||||
pl_py_uv_yield_target_source (Target_t *target, char *option)
|
||||
{
|
||||
if (!target->inited) target->preludefn ();
|
||||
|
||||
@@ -77,7 +77,7 @@ pl_python_uv_yield_target_source (Target_t *target, char *option)
|
||||
}
|
||||
|
||||
static char *
|
||||
pl_python_uv_read_config (const char *path)
|
||||
pl_py_uv_read_config (const char *path)
|
||||
{
|
||||
if (!xy_file_exist (path)) return xy_strdup ("");
|
||||
|
||||
@@ -101,16 +101,16 @@ pl_python_find_uv_config (bool mkdir)
|
||||
if (chsrc_in_project_scope_mode())
|
||||
{
|
||||
// uv.toml 与 pyproject.toml 并存时,uv 会忽略后者中的 [tool.uv]。
|
||||
char *uv_toml = xy_2strcat (PL_Python_uv_Local_ConfigPath, PL_Python_uv_ConfigFile);
|
||||
char *uv_toml = xy_2strcat (pl_py_uv_Local_ConfigPath, pl_py_uv_ConfigFile);
|
||||
if (xy_file_exist (uv_toml))
|
||||
return uv_toml;
|
||||
free (uv_toml);
|
||||
|
||||
char *pyproject = xy_2strcat (PL_Python_uv_Local_ConfigPath, PL_Python_uv_PyprojectConfigFile);
|
||||
char *pyproject = xy_2strcat (pl_py_uv_Local_ConfigPath, pl_py_uv_PyprojectConfigFile);
|
||||
if (xy_file_exist (pyproject))
|
||||
return pyproject;
|
||||
free (pyproject);
|
||||
return xy_2strcat (PL_Python_uv_Local_ConfigPath, PL_Python_uv_ConfigFile);
|
||||
return xy_2strcat (pl_py_uv_Local_ConfigPath, pl_py_uv_ConfigFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -130,20 +130,20 @@ pl_python_find_uv_config (bool mkdir)
|
||||
{
|
||||
chsrc_ensure_dir (config_dir);
|
||||
}
|
||||
char *result = xy_path_join (config_dir, PL_Python_uv_ConfigFile);
|
||||
char *result = xy_path_join (config_dir, pl_py_uv_ConfigFile);
|
||||
free (config_dir);
|
||||
return result;
|
||||
}
|
||||
else
|
||||
{
|
||||
// config path on Linux or macOS
|
||||
const char *config_path = pl_python_uv_user_config_path ();
|
||||
const char *config_path = pl_py_uv_user_config_path ();
|
||||
char *config_dir = xy_path_join (config_path, "uv");
|
||||
if (mkdir)
|
||||
{
|
||||
chsrc_ensure_dir (config_dir);
|
||||
}
|
||||
char *result = xy_path_join (config_dir, PL_Python_uv_ConfigFile);
|
||||
char *result = xy_path_join (config_dir, pl_py_uv_ConfigFile);
|
||||
free (config_dir);
|
||||
return result;
|
||||
}
|
||||
@@ -152,7 +152,7 @@ pl_python_find_uv_config (bool mkdir)
|
||||
|
||||
|
||||
void
|
||||
pl_python_uv_getsrc (char *option)
|
||||
pl_py_uv_getsrc (char *option)
|
||||
{
|
||||
char *uv_config = pl_python_find_uv_config (false);
|
||||
|
||||
@@ -167,7 +167,7 @@ pl_python_uv_getsrc (char *option)
|
||||
}
|
||||
|
||||
// uv.toml 与 pyproject.toml 均使用同一套受限 TOML 读取逻辑。
|
||||
char *content = pl_python_uv_read_config (uv_config);
|
||||
char *content = pl_py_uv_read_config (uv_config);
|
||||
if (!content)
|
||||
{
|
||||
chsrc_error2 ("无法读取 uv 配置文件");
|
||||
@@ -175,7 +175,7 @@ pl_python_uv_getsrc (char *option)
|
||||
return;
|
||||
}
|
||||
|
||||
bool pyproject = xy_str_end_with (uv_config, PL_Python_uv_PyprojectConfigFile);
|
||||
bool pyproject = xy_str_end_with (uv_config, pl_py_uv_PyprojectConfigFile);
|
||||
const char *index_header = pyproject ? "[[tool.uv.index]]" : "[[index]]";
|
||||
const char *parent_table = pyproject ? "[tool.uv]" : NULL;
|
||||
|
||||
@@ -191,7 +191,7 @@ pl_python_uv_getsrc (char *option)
|
||||
chsrc_note2 ("No source configured in uv, showing default upstream source:");
|
||||
else
|
||||
chsrc_note2 ("uv 中未配置源,显示默认上游源:");
|
||||
Source_t default_source = chsrc_yield_source (&pl_python_group_target, "upstream");
|
||||
Source_t default_source = chsrc_yield_source (&pl_py_group_target, "upstream");
|
||||
say (default_source.url);
|
||||
}
|
||||
|
||||
@@ -212,16 +212,16 @@ pl_python_uv_getsrc (char *option)
|
||||
* 一次性完成uv配置文件的全部文件操作 (set 路径)
|
||||
*/
|
||||
static bool
|
||||
pl_python_uv_write_all (const char *uv_config, const char *pypi_url, const char *py_dl_url)
|
||||
pl_py_uv_write_all (const char *uv_config, const char *pypi_url, const char *py_dl_url)
|
||||
{
|
||||
char *content = pl_python_uv_read_config (uv_config);
|
||||
char *content = pl_py_uv_read_config (uv_config);
|
||||
if (!content)
|
||||
{
|
||||
chsrc_error2 ("无法读取 uv 配置文件");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool pyproject = xy_str_end_with (uv_config, PL_Python_uv_PyprojectConfigFile);
|
||||
bool pyproject = xy_str_end_with (uv_config, pl_py_uv_PyprojectConfigFile);
|
||||
const char *index_header = pyproject ? "[[tool.uv.index]]" : "[[index]]";
|
||||
const char *parent_table = pyproject ? "[tool.uv]" : NULL;
|
||||
|
||||
@@ -248,7 +248,7 @@ pl_python_uv_write_all (const char *uv_config, const char *pypi_url, const char
|
||||
* @consult https://docs.astral.sh/uv/reference/settings/#python-install-mirror
|
||||
*/
|
||||
void
|
||||
pl_python_uv_setsrc (char *option)
|
||||
pl_py_uv_setsrc (char *option)
|
||||
{
|
||||
chsrc_ensure_program ("uv");
|
||||
|
||||
@@ -272,11 +272,11 @@ pl_python_uv_setsrc (char *option)
|
||||
return;
|
||||
}
|
||||
|
||||
Source_t default_pypi = pl_python_uv_yield_target_source (&pl_python_group_target, "upstream");
|
||||
Source_t default_gh = pl_python_uv_yield_target_source (&pl_py_uv_python_build_target, "upstream");
|
||||
Source_t default_pypi = pl_py_uv_yield_target_source (&pl_py_group_target, "upstream");
|
||||
Source_t default_gh = pl_py_uv_yield_target_source (&pl_py_uv_python_build_target, "upstream");
|
||||
|
||||
chsrc_backup (uv_config);
|
||||
if (!pl_python_uv_write_all (uv_config, default_pypi.url, default_gh.url))
|
||||
if (!pl_py_uv_write_all (uv_config, default_pypi.url, default_gh.url))
|
||||
{
|
||||
free (uv_config);
|
||||
return;
|
||||
@@ -302,10 +302,10 @@ pl_python_uv_setsrc (char *option)
|
||||
for (int i = 0; i < pl_py_uv_python_build_target.sources_n; i++)
|
||||
if (xy_streql (pl_py_uv_python_build_target.sources[i].mirror->code, option))
|
||||
{ gh_found = true; break; }
|
||||
if (!pl_python_group_target.inited)
|
||||
pl_python_group_target.preludefn ();
|
||||
for (int i = 0; i < pl_python_group_target.sources_n; i++)
|
||||
if (xy_streql (pl_python_group_target.sources[i].mirror->code, option))
|
||||
if (!pl_py_group_target.inited)
|
||||
pl_py_group_target.preludefn ();
|
||||
for (int i = 0; i < pl_py_group_target.sources_n; i++)
|
||||
if (xy_streql (pl_py_group_target.sources[i].mirror->code, option))
|
||||
{ pypi_found = true; break; }
|
||||
|
||||
if (gh_found && !pypi_found)
|
||||
@@ -317,15 +317,15 @@ pl_python_uv_setsrc (char *option)
|
||||
gh_opt = option; // 共有 code: 两个 target 都使用同一 code
|
||||
}
|
||||
|
||||
Source_t source = chsrc_yield_source (&pl_python_group_target, pypi_opt);
|
||||
Source_t source = chsrc_yield_source (&pl_py_group_target, pypi_opt);
|
||||
// 内部 target 不得复用 Python group leader 的数组下标。
|
||||
Source_t gh_source = pl_python_uv_yield_target_source (&pl_py_uv_python_build_target, gh_opt);
|
||||
Source_t gh_source = pl_py_uv_yield_target_source (&pl_py_uv_python_build_target, gh_opt);
|
||||
|
||||
if (chsrc_in_standalone_mode())
|
||||
chsrc_confirm_source (&source);
|
||||
|
||||
chsrc_backup (uv_config);
|
||||
if (!pl_python_uv_write_all (uv_config, source.url, gh_source.url))
|
||||
if (!pl_py_uv_write_all (uv_config, source.url, gh_source.url))
|
||||
{
|
||||
free (uv_config);
|
||||
return;
|
||||
@@ -341,7 +341,7 @@ pl_python_uv_setsrc (char *option)
|
||||
|
||||
|
||||
void
|
||||
pl_python_uv_resetsrc (char *option)
|
||||
pl_py_uv_resetsrc (char *option)
|
||||
{
|
||||
pl_python_uv_setsrc (option);
|
||||
pl_py_uv_setsrc (option);
|
||||
}
|
||||
+6
-6
@@ -155,12 +155,12 @@ chsrc_init_menu ()
|
||||
|
||||
#define add(t) xy_seq_push(ProgStore.pl, &pl_##t##_target); (&pl_##t##_target)->preludefn = pl_##t##_prelude
|
||||
add (ruby);
|
||||
add (python_group);
|
||||
add (python_pip);
|
||||
add (python_poetry);
|
||||
add (python_pdm);
|
||||
add (python_rye);
|
||||
add (python_uv);
|
||||
add (py_group);
|
||||
add (py_pip);
|
||||
add (py_poetry);
|
||||
add (py_pdm);
|
||||
add (py_rye);
|
||||
add (py_uv);
|
||||
add (js_group);
|
||||
add (js_bun);
|
||||
add (js_npm);
|
||||
|
||||
Reference in new issue
Block a user