-
Notifications
You must be signed in to change notification settings - Fork 0
MIGRATION
v2.5.0 standardizes the CLI interface for swap and sops commands. Both now use consistent scope behavior:
- No args = vault level (default)
- With files = file level
-
--global= all vaults
| Old Command | New Command |
|---|---|
rsenv swap vault-out |
rsenv swap out |
rsenv swap all-out |
rsenv swap out --global |
rsenv swap all-status |
rsenv swap status --global |
rsenv swap all-out -C /path |
rsenv swap out --global --vault-base /path |
rsenv swap all-status -C /path |
rsenv swap status --global --vault-base /path |
swap out without arguments now defaults to vault level (like sops encrypt):
| Old | New |
|---|---|
swap out → error |
swap out → vault level |
swap out --vault → vault level |
swap out → vault level |
The gitignore commands now operate on a single scope by default:
| Old Behavior | New Behavior |
|---|---|
gitignore-sync (no flag) synced both vault and global |
gitignore-sync syncs vault only |
gitignore-sync --global synced global only |
gitignore-sync --global syncs global only |
To sync both scopes, run the command twice:
rsenv sops gitignore-sync # vault
rsenv sops gitignore-sync --global # global-
File-level sops operations:
rsenv sops encrypt <file>andrsenv sops decrypt <file> -
Consistent scope behavior: No args = vault, with args = file,
--global= all vaults
# Update aliases/scripts
sed -i 's/swap vault-out/swap out/g' ~/.bashrc
sed -i 's/swap out --vault/swap out/g' ~/.bashrc
sed -i 's/swap all-out/swap out --global/g' ~/.bashrc
sed -i 's/swap all-status/swap status --global/g' ~/.bashrcMigrating from rs-env v1 to rsenv v2 takes about 5 minutes. Your environment files work unchanged.
# 1. Install v2
cargo install rsenv
# 2. Uninstall v1 (optional)
cargo uninstall rs-env
# 3. Update shell aliases (see below)
# 4. Verify
rsenv --versionAll v1 commands moved under the env subcommand:
| v1 (rs-env) | v2 (rsenv) |
|---|---|
rsenv build <file> |
rsenv env build <file> |
rsenv envrc <file> |
rsenv env envrc <file> |
rsenv select-leaf <file> |
rsenv env envrc <file> |
rsenv files <file> |
rsenv env files <file> |
rsenv select [dir] |
rsenv env select [dir] |
rsenv tree [dir] |
rsenv env tree [dir] |
rsenv branches [dir] |
rsenv env branches [dir] |
rsenv edit [dir] |
rsenv env edit [dir] |
rsenv edit-leaf <file> |
rsenv env edit-leaf <file> |
rsenv tree-edit [dir] |
rsenv env tree-edit [dir] |
rsenv leaves [dir] |
rsenv env leaves [dir] |
rsenv link <files> |
rsenv env link <files> |
rsenv unlink <file> |
rsenv env unlink <file> |
If you have aliases, update them:
# Before (v1)
alias envbuild='rsenv build'
alias envselect='rsenv select'
alias envtree='rsenv tree'
# After (v2)
alias envbuild='rsenv env build'
alias envselect='rsenv env select'
alias envtree='rsenv env tree'The # rsenv: directive is fully backward compatible:
# rsenv: parent.env
export MY_VAR=valueYour existing .env files work without modification.
v2 adds three major capabilities beyond environment management:
Unified secure storage outside your project:
rsenv init vault # Create vault for project
rsenv info # Show vault statusMove sensitive files to vault, leave symlinks:
rsenv guard add secrets.yaml
rsenv guard list
rsenv guard restore secrets.yamlTemporary development overrides:
rsenv swap init config.yml # Move to vault
rsenv swap in config.yml # Use vault version
rsenv swap out config.yml # Restore original
rsenv swap statusEncrypt vault contents:
rsenv sops encrypt
rsenv sops decrypt
rsenv sops statusUnified config at ~/.config/rsenv/rsenv.toml:
rsenv config init --global
rsenv config show
rsenv config pathNew variables in v2:
| Variable | Purpose |
|---|---|
RSENV_VAULT |
Path to current project's vault |
RSENV_SWAPPED |
Set to 1 when files are swapped in |
RSENV_VAULT_BASE_DIR |
Override vault base directory |
You can adopt v2 features incrementally:
-
Day 1: Use
rsenv envcommands (drop-in replacement) -
Later: Initialize vault with
rsenv init vault - As needed: Guard sensitive files, set up swapping
The vault features are optional. You can use rsenv purely for environment hierarchy management, just like v1.
# Check installation
which rsenv
cargo install rsenv# Find aliases
grep -r "rsenv build\|rsenv select\|rsenv tree" ~/.bashrc ~/.zshrc ~/.config/fish
# Update to v2 syntax# Remove v1
cargo uninstall rs-env
# Verify only v2
rsenv --version- Quick Start - Get started with v2
- Core Concepts - Understand the vault philosophy
- Command Reference - Complete command documentation
rsenv Documentation