1个不稳定版本
0.2.2 | 2022年8月26日 |
---|
#2292 in 编码
63 每月下载量
9KB
177 代码行
tombl
tombl
使得bash
能够在保存为.toml
文件的配置中实现DevOps自动化。
它允许bash
以.toml
文件的结构化
方式读取,因此您不需要想出奇怪的临时解决方案,涉及awk
、sed
和眼泪,因为您没有使用真正的toml解析器,在生产中一旦出现问题。
$ 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无法存储任何类型的嵌套数组,因此在导出时将忽略任何嵌套,您将不得不调整您的-VAR=path.to.thing
来访问嵌套信息。建议您从set -
开始编写脚本,以便快速失败™。
$ 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
依赖项
~1.5–2.2MB
~43K SLoC