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日

#6#directed-acyclic-graph

每月22次 下载

BSD-3-Clause

66KB
1.5K SLoC

rs-env

分层环境变量管理

原因

在多个云项目中工作时,管理不同项目、阶段、区域等的环境变量是一项不可避免的繁琐工作。

尤其是避免重复和了解特定值来源的挑战。分层变量管理是我的应对之策。

特性

  • 从一系列 <name>.env 文件中编译环境变量的结果集。
  • 依赖可以形成一个树或 DAG(有向无环图)。
  • 最后定义的变量优先,即子节点高于父节点,最右侧的兄弟节点高于最左侧的兄弟节点(在 DAG 的情况下)。
  • 通过内置的 FZF(模糊查找)进行智能环境选择。
  • 通过内置的 FZF 进行快速编辑。
  • 并行树编辑。
  • direnv 集成:将结果变量列表写入您的 .envrc 文件。
  • 通过 EnvFile 插件与 JetBrains 集成。

概念

concept

安装

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

jetbrain

开发

  • 由于 "skim" 测试需要有效终端,因此它们通过 Makefile 运行。
  • rsenv select 的测试:运行调试目标并检查 rsenv .envrc 文件。

依赖项

~15–26MB
~405K SLoC