kraven 0.2.2

Manage named environment variable profiles
kraven-0.2.2 is not a library.

kraven

Manage named environment variable profiles.

Installation

cargo install kraven

Usage

# List available profiles
kraven list

# Create or edit a profile
kraven edit my-profile

# Activate a profile (spawns a subshell with env vars)
kraven activate my-profile

# Show the currently active profile
kraven current

# Display profile contents
kraven show my-profile

# Display profile contents with masked values
kraven show my-profile --mask

# Show how to exit the current kraven session
kraven deactivate

# Remove a profile
kraven remove my-profile

# Show shell completion setup instructions
kraven completions

Shell Completions

Enable tab completion by adding the appropriate line to your shell config:

# Bash (~/.bashrc)
source <(COMPLETE=bash kraven)

# Zsh (~/.zshrc)
source <(COMPLETE=zsh kraven)

# Fish (~/.config/fish/config.fish)
COMPLETE=fish kraven | source

Then restart your shell or source the config file.

Customizing Your Shell Prompt

When a profile is active, Kraven sets the KRAVEN_ACTIVE environment variable to the profile name. You can use this to display the active profile in your shell prompt.

Zsh

Add this to your ~/.zshrc:

precmd() {
    if [[ -n "$KRAVEN_ACTIVE" ]]; then
        kraven_info="[${KRAVEN_ACTIVE}] "
    else
        kraven_info=""
    fi
}

setopt PROMPT_SUBST
PROMPT='${kraven_info}%~ %# '

Bash

Add this to your ~/.bashrc:

set_prompt() {
    if [[ -n "$KRAVEN_ACTIVE" ]]; then
        kraven_info="[${KRAVEN_ACTIVE}] "
    else
        kraven_info=""
    fi
    PS1="${kraven_info}\w \$ "
}
PROMPT_COMMAND=set_prompt

Fish

Add this to your ~/.config/fish/config.fish or create ~/.config/fish/functions/fish_prompt.fish:

function fish_prompt
    if set -q KRAVEN_ACTIVE
        echo -n "[$KRAVEN_ACTIVE] "
    end
    echo -n (prompt_pwd) '> '
end

Profile Format

Profiles are stored as plain text files in ~/.config/kraven/ using the standard dotenv format:

KEY=value
ANOTHER_KEY=another_value

# Comments start with #
QUOTED="value with spaces"
SINGLE_QUOTED='literal $value without expansion'

# Double-quoted values support escape sequences
ESCAPED="line1\nline2\ttabbed"

Supported escape sequences in double-quoted values: \", \\, \n, \t

License

GPL-3.0