Crate eve[][src]

Eve: Environment editor

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.

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;
    }
}

Structs

Eve

A struct to allow replacement of text with environment variables.