1 个不稳定版本
0.2.1 | 2024 年 7 月 18 日 |
---|
在 命令行工具 中排名 #494
每月 102 次下载
31KB
592 lines
relconf
根据当前路径管理配置
relconf
根据当前路径生成 toml、yaml 和配置文件。它从 yaml 文件中读取其配置(见 用法 了解该文件预期位置),根据当前路径合并 toml/yaml/json 文件,将最终配置写入磁盘,并可选择输出指向生成配置的环境变量。
目录
安装
您可以使用 download.ps1
脚本下载适用于您的操作系统和架构的正确版本。不要被名字骗了,该脚本在 Linux 或 macOS 的 Bash/ZSH 上也能工作!
在 Linux 或 macOS 上运行
curl -s https://raw.githubusercontent.com/kfkonrad/relconf/main/download.ps1 | bash
# OR
wget -qO- https://raw.githubusercontent.com/kfkonrad/relconf/main/download.ps1 | bash
在 Windows 上运行
Invoke-Expression ((Invoke-WebRequest -Uri "https://raw.githubusercontent.com/kfkonrad/relconf/main/download.ps1").Content)
如果您不喜欢从互联网上运行脚本,您也可以在这个仓库的 发行版部分 中找到和下载应用程序。
您还可以使用 cargo 从源代码安装
cargo install relconf
用法
# generate configs for all tools
relconf
# generate configs only for listed tools
relconf -o foo,bar
relconf
实际应用
Relconf 不会自动运行。我建议编写一个包装工具,该工具使用 relconf
来管理其配置,如下所示,并将包装器添加到您的 .bashrc
/.zshrc
/config.fish
(或类似)中。
-
Bash/ZSH
# as an alias alias foo="source <(relconf -o foo); command foo" # or as a function function foo() { source <(relconf -o foo) command foo $@ }
-
Fish
function foo --wraps foo relconf -o foo | source command foo $argv end
这样设置 relconf
将始终在执行命令 foo
之前运行,确保配置是最新的且适用于您正在运行 foo
的任何目录。
relconf
的配置文件
relconf
从磁盘读取其配置。以下是一个使用所有功能的示例配置。
tools:
- name: jj
format: toml # or yaml or json
rootconfig: ~/.jjconfig.toml # mandatory
inject:
- env-name: JJ_CONFIG # optional
path: ~/.config/jj/merged.toml
- path: ~/.config/jj/other-location.toml
subconfigs:
- path: ~/.config/jj/always.toml
- path: ~/.config/jj/company.toml
when: # optional, when absent the subconfig will always be imported
- directory: ~/workspace/company-gitlab
match-subdirectories: true # optional, defaults to false
relconf
保留子配置列出的顺序,并将按此顺序合并并覆盖值。
如果注入设置了 env-name
键,relconf
将输出类似以下内容(基于上述配置)
export JJ_CONFIG=/home/USERNAME/.config/jj/merged.toml
由 relconf
输出到 stdout 的内容在 Bash、ZSH(以及其他 POSIX 兼容的 shell)和 Fish 中安全地 source
。这使得像上文部分中的片段一样自动设置适当的配置变量变得简单。
此外,relconf
配置格式的 JSON Schema 可在 /assets/relconf.schema.json 中找到。
配置文件位置
配置文件的默认位置取决于您的操作系统。下表提供概述。请注意,仅支持 Linux、macOS 和 Windows。
操作系统 | 默认配置路径 |
---|---|
Linux | $XDG_CONFIG_HOME/relconf/config.yaml 或 $HOME/.config/relconf/config.yaml |
macOS | $HOME/Library/ApplicationSupport/relconf/config.yaml |
Windows | C:\Users\USERNAME\AppData\Roaming\relconf\config.yaml |
您可以通过设置 RELCONF_CONFIG
或使用 relconf -c path/to/config.yaml
来覆盖默认位置。
生成模式
要生成模式,需要使用 relconf
的 schema
功能进行构建。您可以通过以下方式启用功能并生成模式
cargo run -F schema -- --generate-schema
发布 relconf
有关如何发布 relconf
的说明,请参阅 kfkonrad/generator-standard-readme-rust 的文档。这两个仓库使用相同的机制和脚本。
维护者
贡献
接受 PR。
小贴士:如果编辑 README,请遵循 standard-readme 规范。
许可证
MIT © 2024 Kevin F. Konrad
依赖项
~7–19MB
~216K SLoC