Add envy plugin for easy profile switching

This commit is contained in:
Pawel Olejniczak 2017-02-18 14:25:48 +07:00
parent d2725d44fc
commit 4dcce7405b
No known key found for this signature in database
GPG Key ID: 624083DAB36311AB
2 changed files with 61 additions and 0 deletions

22
plugins/envy/README.md Normal file
View File

@ -0,0 +1,22 @@
# envy - oh-my-zsh plugin
Easily switch between shell profiles using one command.
Profiles are simple files just like .bashrc or .zshrc, located in separate directory. You can load them on demand, any time you want.
[![asciicast](https://asciinema.org/a/brayiwehsfqt5gg5dzse28p38.png)](https://asciinema.org/a/brayiwehsfqt5gg5dzse28p38)
## Usage
Create first profile by executing `envy create work`. This will put empty file under `$HOME/.envy/work`. You can put there aliases, environment variables, functions or any shell logic.
To load profile -- `envy work`.
By default, when loading zsh envy loads `default` profile if it finds it.
## Options
You can customize envy by putting these env vars in .zshrc (or .bashrc):
* `ENVY_CONFIG_DIR` - directory which contains profile files (default: $HOME/.envy)
* `ENVY_DEFAULT_ENV` - profile to be loaded when zsh starts (default: default)

View File

@ -0,0 +1,39 @@
ENVY_CONFIG_DIR="${ENVY_CONFIG_DIR:-${HOME}/.envy}"
ENVY_DEFAULT_ENV="${ENVY_DEFAULT_ENV:-default}"
function _envy_start() {
_envy_load ${ENVY_DEFAULT_ENV} &>/dev/null || true
}
function _envy_load() {
local new_env_path="${ENVY_CONFIG_DIR}/${1}"
if [[ ! -f ${new_env_path} ]]; then
echo "Cannot find envy file '${new_env_path}'"
return 1
fi
source ${new_env_path}
}
function _envy_create() {
local new_env_path="${ENVY_CONFIG_DIR}/${1}"
[[ -z "${1}" ]] && echo "No profile name argument" && return 1
[[ ! -d "${ENVY_CONFIG_DIR}" ]] && mkdir -p ${ENVY_CONFIG_DIR}
echo "#!/bin/bash" > ${new_env_path}
echo "Created empty profile: ${new_env_path}"
}
function envy() {
case "${1}" in
create)
_envy_create ${2}
;;
*)
_envy_load ${1}
esac
}
_envy_start