2个版本 (1个稳定版)
2.0.0 | 2024年3月7日 |
---|---|
0.1.0 | 2023年9月10日 |
#86 在 配置
每月 30 次下载
22KB
405 行
confmg
Confmg 允许您将所有配置文件存储在同步到远程服务器(例如GitHub、云存储等)的文件夹中,并可选择性地将其复制到不同平台上的正确位置。
例如,您可以将 .gitconfig
文件保存在 ~/.confmg
文件夹中,该文件夹位于GitHub上的私有仓库中。同一个文件夹包含一个 confmg.json
文件,其中包含带有“git”标签和相应文件位置的条目(通常是 ~/.gitconfig
)。然后,您只需一条命令即可将此 .gitconfig
文件复制到其正确位置。其他配置文件可以根据平台的不同具有不同的位置,但内容始终相同(例如,Linux上的VSCode配置位于 ~/.config/Code/User/settings.json
,Windows上的配置位于 ~/AppData/Roaming/Code/User/settings.json
)。
安装
如果您已安装Rust工具链,则可以直接运行 cargo install confmg
。否则,您可以从 发布 部分下载二进制文件。
配置
confmg的配置以JSON文件的形式编写。默认路径是 ~/.confmg/confmg.json
,但可以通过 -c, --config-file
参数或 CONFMG_CONFIG
环境变量来覆盖。配置文件应按照以下结构编写
{
"<Label for this config>": {
"source": "<Path to the source config file relative to this file (usually located in the same folder)>",
"targets": {
"windows": "<Path to the target config file on Windows (optional)>",
"linux": "<Path to the target config file on Linux (optional)>",
"macos": "<Path to the target config file on MacOS (optional)>"
}
}
}
以下是一个confmg配置文件的示例
{
"git": {
"source": ".gitconfig",
"targets": {
"linux": "~/.gitconfig",
"macos": "~/.gitconfig",
"windows": "~/.gitconfig"
}
},
"bashrc": {
"source": ".bashrc",
"targets": {
"linux": "~/.bashrc",
"macos": "~/.bashrc"
}
},
"vscode_settings": {
"source": "vscode/settings.json",
"targets": {
"linux": "~/.config/Code/User/settings.json",
"macos": "~/Library/Application Support/Code/User/settings.json",
"windows": "~/AppData/Roaming/Code/User/settings.json"
}
}
}
用例和用法
- 在设置新电脑时,您可以下载包含您的配置文件的远程confmg文件夹,然后运行
confmg apply-source
。然后,所有配置文件将复制到其正确的目的地。 - 在您的本地文件系统中更改配置文件时,您可以运行
confmg diff <LABEL>
来查看更改,并运行confmg apply-target <LABEL>
将confmg文件夹中的文件覆盖为更改后的文件。 - 运行
confmg edit-config
以在默认编辑器中打开confmg配置文件。 - 运行
confmg edit-source <LABEL>
或confmg edit-target <LABEL>
以在默认编辑器中打开特定配置的源或目标文件。 - 运行
confmg --help
获取完整文档。
TODOs
- 添加执行脚本的可能性
- 使用https://github.com/mitsuhiko/similar进行差异比较?
- 添加添加/编辑/删除配置的命令(见https://docs.rs/clap/latest/clap/_derive/_cookbook/typed_derive/index.html)
依赖关系
~2–13MB
~111K SLoC