8 comments

[ 5.0 ms ] story [ 24.3 ms ] thread
If anyone uses this, please share. As a newb, I would love to see some real use examples to learn from.
Sure thing, I'm currently using it in docker as a lightweight way to set config files from environment variables. I'll put together a write up of how/why we are doing that and post the link in reply to this.
Just today I made a suggestion in a Github issue[0] to use sed for a similar use case. There, it was to generate an Amazon ECS task definition file from a CI tool's environment variables. Using this, populating the list of environment variables by looping through the output of env and including anything that matches a given prefix would be a breeze.

Thanks for the excellent tool!

[0]: https://github.com/1science/wercker-aws-ecs/issues/4#issueco...

How is this different from GNU envsubst (in the gettext package)?
envsubst will really just perform variable substitution, not perform any logic or command substitution (e.g. $(hostname -f)). It's also limited, from what I've seen, in support for other bash variable actions (such as defaults). You can also write loops with output similar to other templating languages here as well.
Traditionally, this would be a job for m4:

    $ cat examples/config.yaml.in 
    user: USERNAME
    password: ifelse(PASSWORD,`PASSWORD',`defaultpass',PASSWORD)
    files:
    patsubst(esyscmd(`ls'), `.+$', `  - \&')

    $ m4 -DUSERNAME=somebody examples/config.yaml.in
    user: somebody
    password: defaultpass
    files:
      - README.m4
      - examples
      - sempl