9 个版本 (重大更新)
0.14.3 | 2024年4月14日 |
---|---|
0.13.2 | 2023年9月26日 |
0.11.0 | 2023年9月15日 |
0.10.1 | 2023年9月9日 |
0.1.0 | 2023年8月14日 |
每月22次 下载
66KB
1.5K SLoC
rs-env
原因
在多个云项目中工作时,管理不同项目、阶段、区域等的环境变量是一项不可避免的繁琐工作。
尤其是避免重复和了解特定值来源的挑战。分层变量管理是我的应对之策。
特性
- 从一系列
<name>.env
文件中编译环境变量的结果集。 - 依赖可以形成一个树或 DAG(有向无环图)。
- 最后定义的变量优先,即子节点高于父节点,最右侧的兄弟节点高于最左侧的兄弟节点(在 DAG 的情况下)。
- 通过内置的 FZF(模糊查找)进行智能环境选择。
- 通过内置的 FZF 进行快速编辑。
- 并行树编辑。
- direnv 集成:将结果变量列表写入您的
.envrc
文件。 - 通过 EnvFile 插件与 JetBrains 集成。
概念
安装
cargo install rs-env
使用
结果环境变量集是所有链接文件的合并。
- DAG:有向无环图,即文件可以有多个父节点
- 分支:一组线性文件,每个文件只能有一个父节点(无 DAG)。
- 树:一组分支(文件可以属于多个分支,但只能有一个父节点)
- 环境变量定义在
<name>.env
文件中,并且必须以export
命令为前缀 - 有关 DAG、树和分支的示例,请参阅 示例
- 每个项目支持多个树/分支
- 可以通过添加注释行
# rsenv: <name.env>
或通过以下方式手动链接文件:rsenv link <root.env> <child1>.env <child2>.env
。
然后像通常一样使用结果变量集
source <(rsenv build <leaf-node.env>)
Hierarchical environment variable management
Usage: rsenv [OPTIONS] [NAME] [COMMAND]
Commands:
build Build the resulting set of environment variables (DAG/Tree)
envrc Write the resulting set of variables to .envrc (requires direnv, DAG/Tree)
files Show all files involved in resulting set (DAG/Tree)
edit-leaf Edit the given environment file and all its parents (DAG/Tree)
edit Edit the FZF selected branch/DAG
select-leaf select environment/branch and update .envrc file (requires direnv, DAG/Tree)
select FZF based selection of environment/branch and update of .envrc file (requires direnv, DAG/Tree)
link Link files into a linear dependency branch (root -> parent -> child)
branches Show all branches (linear representation)
tree Show all trees (hierarchical representation)
tree-edit Edit branches of all trees side-by-side (vim required in path)
leaves Output leaves as paths (Tree)
help Print this message or the help of the given subcommand(s)
Arguments:
[NAME] Optional name to operate on
Options:
-d, --debug... Turn debugging information on
--generate <GENERATOR> [possible values: bash, elvish, fish, powershell, zsh]
--info
-h, --help Print help
-V, --version Print version
基础
通过 FZF 选择
树和分支结构(智能编辑)
集成
direnv
direnv 可自动激活环境。
- rs-env 可更新选定的依赖图变量的
.envrc
文件。
JetBrains 集成
环境变量生命周期注入
- 插件 EnvFile 可用于生命周期注入环境变量。
- 使用脚本
runenv.sh
作为 "EnvFile" 脚本(勾选可执行复选框!)。 - 环境变量
RUN_ENV
用于指定要加载的环境。 - 它将在指定目录中查找文件
<RUN_ENV>.env
。
开发
- 由于 "skim" 测试需要有效终端,因此它们通过 Makefile 运行。
- 对
rsenv select
的测试:运行调试目标并检查 rsenv .envrc 文件。
依赖项
~15–26MB
~405K SLoC