82 lines
1.5 KiB
Markdown
82 lines
1.5 KiB
Markdown
# 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!
|