Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对toml与json等文件的支持 #141

Open
happy-game opened this issue Dec 8, 2024 · 3 comments
Open

对toml与json等文件的支持 #141

happy-game opened this issue Dec 8, 2024 · 3 comments
Labels
新功能 新功能

Comments

@happy-game
Copy link
Collaborator

happy-game commented Dec 8, 2024

一些软件(docker, podman, uv)的源与其他配置一起定义在配置文件当中, 现有的换源方式多是使用sed进行替换, 导致一些复杂行为难以实现(如 docker可以使用多个源).

用于处理jsonjq在很多发行版上并不默认安装, 很难作为作为处理json的手段.

目前大多数linux发行版都会默认安装python, 且jsontomllib(Added in version 3.11)都是python标准库的一部分, 可以通过以下方式在命令行调用python为我们处理这些格式的文件:

echo '{"json": "obj"}' | python -m json.tool
python -c 'import toml; data = toml.load("path/to/file.toml"); print(data["key"]["subkey"])'

可能存在的问题:

  1. docker镜像中的发行版镜像中不默认安装python
  2. windows 不会默认安装python, 直接使用会跳转到应用商店
  3. 需要处理好 python -c后面程序的字符串拼接, 防止非法的字符串导致程序崩溃或产生不可预料的结果
  4. 尽量减少对python的依赖, 在python不可用时应该尽量保证有其他方案完成基础换源
@ccmywish ccmywish changed the title feat: 对toml与json等文件的支持 对toml与json等文件的支持 Dec 9, 2024
@ccmywish ccmywish added the 新功能 新功能 label Dec 9, 2024
@ccmywish
Copy link
Contributor

ccmywish commented Dec 9, 2024

修改 toml 与 json 等文件,我觉得超出了 chsrc 所能做的,所以确实只能依赖第三方的软件。

有实现总比没实现好,如果通过 Python 能够自动化地去修改 recipe,我认为是可以接受的。

如果你觉得有必要实现在 framework 中,我觉得也可以。只要不干扰其它不用 Python 的 recipe 就行。

@ccmywish
Copy link
Contributor

ccmywish commented Dec 9, 2024

chsrc 有实现上的局限性,做不到一切都自动化换源。所以我不排斥只能手动进行换源的方案。这个时候,chsrc 相当于一个文档,不用用户到处去搜怎么换源了。

@happy-game
Copy link
Collaborator Author

chsrc 有实现上的局限性,做不到一切都自动化换源。所以我不排斥只能手动进行换源的方案。这个时候,chsrc 相当于一个文档,不用用户到处去搜怎么换源了。

我认同你的看法, 现有的实现已经可以覆盖绝大部分的需求了, 额外再实现这些功能反而会影响可读性.

等到将来有很大需求了再考虑实现更加合理一点.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
新功能 新功能
Projects
None yet
Development

No branches or pull requests

2 participants