11 ms·
Show HN: Sempl – Stupid Simple Bash Templating
- learning_still 11y agoIf anyone uses this, please share. As a newb, I would love to see some real use examples to learn from.
- nextrevision 11y agoSure 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.
- TomFrost 11y agoJust 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#issuecomment-146541641 https://github.com/1science/wercker-aws-ecs/issues/4#issueco...
- nextrevision 11y agoHere's the write up. Let me know if there's anything unclear! http://nextrevision.github.io/2015/sempl-templating-with-bash/ http://nextrevision.github.io/2015/sempl-templating-with-bas...
- learning_still 11y agoThis is perfect! Thank you for taking the time to make this. It gave me a much better understanding of what sempl is, how to use it, and what it can be used for.
- bashinator 11y agoHow is this different from GNU envsubst (in the gettext package)?
- nextrevision 11y agoenvsubst 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.
- pdkl95 11y agoTraditionally, 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