Add envy plugin for easy profile switching
This commit is contained in:
parent
d2725d44fc
commit
4dcce7405b
22
plugins/envy/README.md
Normal file
22
plugins/envy/README.md
Normal 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)
|
39
plugins/envy/envy.plugin.zsh
Normal file
39
plugins/envy/envy.plugin.zsh
Normal 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
|
Loading…
Reference in New Issue
Block a user