21 个版本
0.9.0 | 2023 年 6 月 15 日 |
---|---|
0.8.0 | 2022 年 10 月 13 日 |
0.7.2 | 2022 年 10 月 13 日 |
0.7.0 | 2022 年 5 月 27 日 |
0.0.1 | 2020 年 12 月 23 日 |
在 命令行工具 中排名 2517
每月下载 87 次
105KB
3K SLoC
Sauce
中心真理是中心真理,我所关心的没有相对的
一个帮助管理特定上下文/项目的 shell 事物的工具,如环境变量。
目录
示例工作流程
# Suppose you've got some directory structure
❯ mkdir -p projects/foo
❯ cd projects
# In "projects", you want some shorthand for quickly pushing your branches
❯ sauce new
Created /Users/danc/.local/share/sauce/projects.toml
❯ sauce set alias push='git push origin "$(git rev-parse --abbrev-ref HEAD)"'
Setting push = git push origin "$(git rev-parse --abbrev-ref HEAD)"
# Your project is, naturally, using 12-factor methodology, so you've got some
# project specific environment variables you need to load!
❯ cd foo
❯ sauce set env foo=bar AWS_PROFILE=meow
Setting foo = bar
Setting AWS_PROFILE = meow
# The core purpose!
❯ sauce
Sourced ~/.local/share/sauce/projects/foo.toml
❯ env
...
AWS_PROFILE=meow
foo=bar
# Note the cascaded loading of upstream values!
❯ push
设置
安装
使用 Cargo
cargo安装 sauce
下载版本
- 从 版本 下载 Linux/Mac 二进制文件
Shell 钩子
目前明确支持以下 shell: zsh
,bash
和 fish
。存在脚手架以支持其他 shell,这应该可以支持其他可能需要 "$SHELL"
特定行为的常见 shell。
将事物加载到环境中需要执行最少的 shell 代码,因此安装二进制文件(以下建议)后,您需要将钩子添加到您的 bashrc/zshrc/config.fish 等文件中。
- bash
eval "$(sauce --shell bash shell init)"
- zsh
eval "$(sauce --shell zsh shell init)"
- fish
sauce --shell fish shell init | source
根据与上述 shell 的相似程度,您可能可以使用上述 shell init
钩子之一,直到添加明确支持
目标
“sauce”可以加载/卸载的东西称为“目标”。
目前支持的目标包括
-
环境变量
sauce set env FOO=bar
-
别名
sauce set alias g=git
-
函数
sauce set function add 'echo $(expr $1 + $2)'
特性
sauce
命令
此用例的主要是使用 sauce
命令,没有子命令,没有参数。这会将当前目录中适用的所有 sauce 目标(环境变量、别名和函数)加载到当前 shell 中。
还有许多选项,允许您自定义 sauce
的行为,例如 sauce --glob DATABASE*
,sauce --filter env:AWS_PROFILE
或 sauce --path ~
。
中央存储
中央存储的原始动机是因为获得了一台新电脑,需要翻查 ~50 个仓库以找到所有散落的 .env
文件和 git 忽略的注释等,以确保没有留下任何东西。
然而,一般来说,将 sauce 数据与实际文件夹放在同一位置会引入许多技术、安全和可用性问题,这些问题可以通过中央存储来规避。
级联加载
sauce
的一个关键特性是值以相对于主目录的级联方式加载。
这使得在各种位置之间组合目标(环境变量、别名和 shell 函数)变得更容易,很可能通过利用您可能已经拥有的自然目录结构。
给定一个目录结构
~/
work/
project/
repo/
repo2/
src/
otherproject/
您可以在任何文件夹级别/深度运行 sauce
,例如 ~/work/project/repo/
。保存到文件夹的值:~
、~/work
、~/work/project
和 ~/work/project/repo
都将被加载。
更具体/深的文件夹的值将优先于更通用/浅的文件夹的值。
所有 sauce 文件都位于 $XDG_DATA_HOME/sauce
文件夹中,之后文件夹结构将跟踪值的文件夹结构相匹配。以上述示例为例,如果每个文件夹都有一个 sauce 文件,您可能会看到
~/.local/share/
sauce.toml
sauce/
project.toml
project/
repo.toml
repo2.toml
repo2/
src.toml
otherproject.toml
自动加载
请参阅 配置参考 中的 autoload-hook
和 autoload
。
本地开发
对于本地开发,启用 --feature dev
可能很有用。这会改变行为,使 shell 插件指向调试构建的绝对位置。
以下可能有助于的示例别名
[alias]
build = 'cargo build --features dev && eval "$(./target/debug/sauce shell init)"'
此时,您只需运行一次 build
命令,就可以通过 cd
来测试 sauce
,同时始终指向当前 shell 的项目版本的 sauce
。
依赖项
~8–21MB
~253K SLoC