tombl

Crates.iotombl
lib.rstombl
version0.2.2
sourcesrc
created_at2022-08-26 20:05:19.539231
updated_at2022-08-26 20:05:19.539231
descriptionInteropability between bash and the TOML serialization format
homepagehttps://github.com/snyball/tombl
repositoryhttps://github.com/snyball/tombl
max_upload_size
id653034
size12,647
Jonas Møller (snyball)

documentation

README

tombl

tombl makes bash viable for DevOps-automations that involve configurations saved as .toml files.

It allows bash to read .toml files structurally, so you don't have to come up with weird ad-hoc solutions involving awk, sed, and tears as soon as it breaks in production because you didn't use an actual toml-parser.

$ set -euo pipefail
$ tombl -e DB=databases.hmm /etc/my-config.toml
declare -A DB=(["user"]="postgreker" ["password"]="super secret" ["host"]="0.0.0.0" ["port"]=5432)
$ eval "$(tombl -e DB=databases.hmm /etc/my-config.toml)"
$ echo "${DB[user]}"
postgreker
$ pg_dumpall -h "${DB[host]}" -p "${DB[port]}" -u "${DB[user]}" > out.sql

Bash is unable to store nested arrays of any kind, so any nesting will be ignored when exporting, and you'll have to adapt your -e VAR=path.to.thing to access the nested information. It is recommended that you start your scripts with set -euo pipefail in order to fail fast™.

$ set -euo pipefail
$ cat /etc/my-config.toml
[databases.hmm]
user = "postgreker"
password = "super secret"
host = "0.0.0.0"
port = 5432
thing-that-is-nested = { will-not-be-included = 123 }
$ tombl -e DB=databases.hmm /etc/my-config.toml
declare -A DB=(["user"]="postgreker" ["password"]="super secret" ["host"]="0.0.0.0" ["port"]=5432)
$ eval "$(tombl -e DB=databases.hmm /etc/my-config.toml)"
$ echo "${DB[thing-that-is-nested]}" # whoops, but this will fail fast because of `set -euo`
bash: l: unbound variable
Commit count: 28

cargo fmt