#env-var #environment #env-file #dotenv #cli-tool #google-cloud #cli

app envy-cli

一款神奇的工具,负责管理您的环境设置

5 个版本 (3 个破坏性更新)

0.4.0 2023年2月2日
0.3.2 2020年4月20日
0.3.0 2019年8月22日
0.2.0 2019年8月13日
0.1.0 2019年3月9日

#21 in #dotenv

Apache-2.0/MIT

18KB
326

envy

在进入目录时设置环境变量。支持bash、zsh和fish。

Documentation Rust

示例

在工作中,每当我处理某些项目时,我必须设置一些环境变量。
例如,这些可以是Google Cloud设置、Consul主机或Docker配置。

每次自己设置正确的环境变量都很麻烦。

direnv 自动加载 .env 文件,但我不想在系统中
充斥着 .env 文件。此外,我需要在几个不相关的
项目中使用相同的环境变量,而且我不想保持 .env 文件同步。

因此,诞生了 envy 的想法。

它使用一个配置文件,定义每个文件夹应设置哪些环境变量。

安装

cargo install envy-cli

将以下行添加到您的 ~/.zshrc 文件的末尾

eval "$(envy hook zsh)"

对于bash,使用 envy hook bash 代替,并将其添加到您的 ~/.bashrc 文件中。

eval "$(envy hook bash)"

对于fish,使用 envy hook fish 代替,并将其添加到您的 ~/.config/fish/config.fish 文件中。

eval (envy hook fish)

一旦打开一个新的shell,envy 将开始匹配目录,并从配置文件中设置指定的环境变量。

使用方法

运行 envy edit 打开配置文件。(在macOS上,此文件位于 /Users/<user>/Library/Application Support/Envy/Config.toml。)

定义正则表达式列表和设置。第一个匹配路径的正则表达式获胜。

[[paths]]
pattern = ".*project1.*"
env = [
  "CONSUL_HTTP_ADDR=http://consul:8500",
  "GITHUB_TOKEN=123"
]

[[paths]]
pattern = ".*project2.*"
env = [
  "DOCKER_HOST=tcp://127.0.0.1:2376",
  "foo=bar"
]

保存文件的那一刻,当前终端将自动获取新的设置;无需重新加载或打开新的终端。✌️

direnv 兼容性

envy 也支持像 direnv 一样加载环境文件。运行 envy allow .env 以在进入当前路径时自动加载 .env 文件。您可以添加多个 .env 文件(例如 envy allow .envrc)。重复的键将在 envy 配置文件中按照出现的顺序被覆盖(运行 envy edit 以修改顺序)。使用 envy deny .env 从列表中删除环境文件。

命令行选项

envy 0.4.0
context-based environment variables

USAGE:
    envy <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    allow     Grants envy to load the given `.env` file
    deny      Revokes the authorization of a given `.env` file
    edit      Edit the envy config file
    export    Export environment variables based on the current directory
    find      Find a single environment variable and print its value
    help      Prints this message or the help of the given subcommand(s)
    hook      Print the hook to activate envy for your shell
    load      Load environment variables from a given `.env` file (for the current session only)
    path      Print path to envy config file
    show      Show envy config for current directory

注意:要将环境变量加载到当前 shell 中,您需要运行 eval "$(envy load)"

限制

  • 仅在 macOS 上进行测试。它也应该在 Linux 和 Windows 上工作。
  • 离开目录时不会取消设置变量。
  • 这是我为自己开发的。因此,这个项目不会非常活跃地工作。

依赖关系

~6.5–9MB
~156K SLoC