Skip to content
/ zenv Public

Shell utility designed to create isolated working environments. It allows you to run arbitrary commands and set environment variables to configure your workspace effortlessly.

License

Notifications You must be signed in to change notification settings

janitha/zenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Zenv

zenv is a shell extension designed to create isolated working environments. It allows you to run arbitrary commands and set environment variables to configure your workspace effortlessly.

Isolation is achieved by creating a new subshell when entering a zenv-aware directory or workspace, preserving the original environment. This approach differentiates zenv from tools like dotenv and autoenv

Prerequisites

  • Zsh

Usage

To mark a directory as a zenv environment, create a .zenv file in that directory. This file will be sourced within the context of the new subshell.

Example `.zenv. file

# Set enviornment variables
export MY_APP_KEY=value
# Run commands
source .venv/bin/activate

Activating

To enter a zenv-aware workspace, zenv must be activated explicitly.

[user@host ~]% zenv ~/foo/bar
>>> Entered a state of Zenv: /home/user/foo/bar >>>

[user@host (bar)](ž)(main±)% cd cat/dog
[user@host (bar)/cat/dog](ž)(main±)%

Deactivating

To leave the zenv-aware directory:

[user@host (bar)](ž)(main±)% exit
<<< Exited a state of Zenv: /Users/janitha/dotfiles <<<

[user@host ~]%

Misc

Once zenv is activated on a directory, the root name of the directory will be cached as a shortcut, which can be used in subsequent invocations as a shorthand.

[user@host ~]% zenv ~/xxx/yyy/zzz
[user@host (zzz)](ž)(main±)% exit

[user@host ~]% zenv zzz
[user@host (zzz)](ž)(main±)% exit

By default, the name of the zenv-aware enviornment is the base most directory. However it can be overriden by specifying a ZENV_NAME in the .zenv file. This will also be used as the shortcut name.

Prompt Integration

Oh-My-Zsh like Prompts

Use the _zenv_prompt_info in the prompt theme.

Zen-prompt

Prompt hooks will automatically be added to the zen-prompt. A marker (ž) will denote that the zenv is active, with multiple markers indicating deeper levels of nesting. Additionally, the directory path will be substituted with the zenv environment path.

About

Shell utility designed to create isolated working environments. It allows you to run arbitrary commands and set environment variables to configure your workspace effortlessly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages