dotenvs

Crates.iodotenvs
lib.rsdotenvs
version0.1.0
sourcesrc
created_at2022-04-28 09:50:49.550723
updated_at2022-11-24 15:19:25.479847
descriptionA correct dotenv library
homepagehttps://github.com/arniu/dotenvs-rs
repositoryhttps://github.com/arniu/dotenvs-rs
max_upload_size
id576713
size25,734
Arniu Tseng (arniu)

documentation

README

dotenvs

crates.io Released API docs MIT licensed

A correct dotenv library, which supports:

  • Multiline values
  • Variable substitution

Parsing rules

  • BASIC=basic
  • empty lines are skipped
  • lines beginning with # are treated as comments
  • # marks the beginning of a comment (unless when the value is wrapped in quotes)
  • empty values become empty strings
  • inner quotes are maintained
  • whitespace is removed from both ends of unquoted values
  • single and double quoted values are escaped
  • single and double quoted values maintain whitespace from both ends
  • double quoted values expand new lines (MULTILINE="new\nline" becomes
    MULTILINE: "new
    line"
    

Expanding rules

  • $KEY will expand any env with the name KEY
  • ${KEY} will expand any env with the name KEY
  • \$KEY will escape the $KEY rather than expand
  • ${KEY:-default} will first attempt to expand any env with the name KEY. If not one, then it will return default

Usage

The easiest and most common usage consists on calling load when the application starts, which will load environment variables from a file named .env in the current directory or any of its parents.

If you need more control about the file name or its location, you can use the from_filename, from_path or from_read.

Examples

A .env file looks like this:

# a comment, will be ignored
REDIS_ADDRESS=localhost:6379
MEANING_OF_LIFE=42

You can optionally prefix each line with the word export, which will conveniently allow you to source the whole file on your shell.

A sample project using dotenv would look like this:

fn main() {
    for (key, value) in dotenv::vars() {
        println!("{}: {}", key, value);
    }
}

LICENSE

MIT

Commit count: 5

cargo fmt