出来ないことがあるのは嫌だったので `--data` オプションを追加した。

github.com

今までconfigファイルを受け取ってその値を利用してrenderingするということができなかった。別の言い方をすると静的な参照関係を記述することは出来たけれど、動的な参照関係を記述することができなかった(個別にrootとなるようなファイルを定義しなおせば出来ないわけじゃないけれどつらい)。

とりあえずの対応ではあるけれど、--data オプションを追加した。以下の様な形で使う。

$ zenmai main.yaml --data=config.json
oauth:
  token: foo
  secret: '*secret*'

--dataオプションで渡されたjsonyamlは辞書としてdataという変数に格納される(--data は複数渡せる。複数渡した場合には$concatで結合される)。 なので使う場合には$get経由でアクセスする。main.yamlはこういう感じ。

# need: token, secret
oauth:
  token: {$get: "data#/token"}
  secret: {$get: "data#/secret"}

ネストした値へのアクセスについてどうしようか悩んだのだけれど。json referenceの変形の様な形で対応した(foo["bar"]["boo"]みたいな形式に対応するのがだるいというのと。pythonでは foo.bar.boo と区別されるので.を利用したくはないという気持ちがあった)。

とりあえず設定ファイルをjsonでも渡せるようにしている(拡張子を見てよしなにやってくれている)

{
  "token": "foo",
  "secret": "*secret*"
}