.zenv

Dotenv (.env) loader written in rust 🦀

build docs crates.io

✨ Features

🚀 Installation

Crate

Add zenv with a version of your choice in the Cargo.toml

toml [dependencies] zenv = "<version>" # Make sure it's the latest version

CLI

bash cargo install zenv --features=cli

Check out the Release page for prebuild binaries for zenv, available for different operating systems.

🤞 Usage

Crate

```rust fn main() { zenv::Zenv::new(".env", false).configure().ok();

// or use macro, which expands to above statement

zenv::zenv!()

} ```

Read the full documention

CLI

``` zenv Dotenv (.env) loader written in rust

USAGE: zenv [FLAGS] [OPTIONS] -- [args]...

FLAGS: -v, --version Prints version -h, --help Prints help information -x, --expand Enable variable expansion

OPTIONS: -f, --file Path to .env file

ARGS: Command that needs to be executed [args]... Arguments for the command

Examples: zenv -f .env -- node index.js zenv -f .env -- npm run dev zenv -f .env -- terraform apply ```

🙌 Good to Know

Basic

```bash PORT=5000 NODE_ENV=production

Single and double quotes are also supported

SQUOTE='singlequoted' DQUOTE='doublequoted' ```

Comments

Comments can be added by using # character.

```bash

COMMENTED=commented

ATTHEEND=commentatthe_end # I am here

If you want # in you value then wrap the value in single or double quotes

QUOTED="quote#quoted" # I'll be removed ```

New Line and Escaping

New lines can added by new line (\n) character and this only works if the values is surrounded by double quotes.

```bash PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nadflhsdlfsjkldfjklsdjf\n-----END RSA PRIVATE KEY-----"

or like this

PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- adflhsdlfsjkldfjklsdjf asdffwejdjf983283lk -----END RSA PRIVATE KEY-----" ```

If you want to escape the new line character you can use the escape (\)

ESCAPED="escaped\\nnew\\nline"

Substitution

Zenv also supports variable substitution (off by default) from the current file or from the operating system. Substitution only works if the values is double quoted ie.e " and can be achieved by the following:

```bash BASIC=basic EXPANDED='${BASIC}expanded' # expands to 'basicexpanded'

System variables (assuming PATH is available)

SYSTEM_VARIABLE="${PATH},/this/is/new/path" ```

🙏 Credits