Crate eve

Source
Expand description

§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.