1 个不稳定版本

0.2.1 2024 年 7 月 18 日

命令行工具 中排名 #494

Download history 93/week @ 2024-07-18 9/week @ 2024-07-25

每月 102 次下载

MIT 许可证

31KB
592 lines

relconf

standard-readme compliant

根据当前路径管理配置

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 来覆盖默认位置。

生成模式

要生成模式,需要使用 relconfschema 功能进行构建。您可以通过以下方式启用功能并生成模式

cargo run -F schema -- --generate-schema

发布 relconf

有关如何发布 relconf 的说明,请参阅 kfkonrad/generator-standard-readme-rust 的文档。这两个仓库使用相同的机制和脚本。

维护者

@kfkonrad

贡献

接受 PR。

小贴士:如果编辑 README,请遵循 standard-readme 规范。

许可证

MIT © 2024 Kevin F. Konrad

依赖项

~7–19MB
~216K SLoC