eve 0.1.1

A program allowing for easy search and replace with environment variables.
Documentation

Eve: Environment editor

Linux build status Windows build status Documentation Donate using Liberapay

The eve utility reads the specified files, or standard input if no files are specified, replacing all instances of {{VAR}} with the environment variable of the same name e.g. $VAR. This utility is mainly useful as a replacement to using sed to insert environment variables into files. As is common when using Docker.

Installation

Binary

Automatic
cargo install eve
Manual

You can download prebuilt binaries in the releases section or create one from source.

$ git clone https://github.com/Aaronepower/eve.git
$ cd eve
$ cargo build --release
Linux/OSX
# sudo mv target/release/eve /usr/local/bin
Windows
  • Create a folder for eve
  • search for env
  • open "edit your enviroment variables"
  • edit PATH
  • append folder path to the end of the string ie: <path>;C:/eve/;

Library

eve = "0.1"

Example

Here's an example of replacing variables in a nginx configuration with environment variables, and comparsion with the equivalent sed command.

nginx.conf

server {
    listen 80;
    listen [::]:80;

    server_name {{NGINX_HOST}};

    location / {
        proxy_pass {{NGINX_PROXY}};
        proxy_next_upstream error timeout invalid_header http_500 http_502
            http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            {{NGINX_HOST}};
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

.env

NGINX_HOST=localhost
NGINX_PROXY=localhost:8000

Commands

sed
sed -e "s|{{NGINX_HOST}}|$NGINX_HOST|" \
    -e "s|{{NGINX_PROXY}}|$NGINX_PROXY|" \
    nginx.conf
eve
eve nginx.conf

Output

server {
    listen 80;
    listen [::]:80;

    server_name localhost;

    location / {
        proxy_pass localhost:8000;
        proxy_next_upstream error timeout invalid_header http_500 http_502
            http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            localhost;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}