# osenv Apply .env files to shell environments! ## What is it Given a .env like this: ```env DB_USER=admin DB_PASSWORD=changeme ``` it will generate scripts for bash (and likely other *sh) and powershell, like: ### Powershell Example output: ```ps1 $env:DB_USER = "admin" $env:DB_PASSWORD = "changeme" ``` ### *nix shell Example output: ```sh export DB_USER=admin export DB_PASSWORD=changeme ``` ## Installation ### Requirements - Rust + Cargo (tested w/ 1.37) - A compatible shell (powershell/bash/zsh) ### Compilation ```sh cargo install --path . ``` This will install `osenv-bin` in your cargo bin folder (don't forget to add it to `PATH`!) You can already use it, with some caveats (having to specify the full string, like `osenv-bin | iex`), but you should just make a function and add it to your shell's profile file. ### Add to profile If you're using sh/bash/zsh, add this to your .bashrc/.zshrc/etc: ```sh osenv() { RES=$(osenv-bin $@) if [ $? -eq 0 ]; then eval $RES else echo $RES fi } ``` If you're using Powershell, add this to your `$profile`: ```ps1 function osenv { $cmd = osenv-bin @Args if ($?) { $cmd | Invoke-Expression } else { Write-Output $cmd } } ``` If you rather have them as script to source, you can find them in `scripts` in this repo. If you want to enhance osenv to add a special "add to profile" command, or make some scripts that do (easy in powershell, not so much in the shell world), contributions are highly appreciated!