Jsonnetで複数ファイルへ出力する
#jsonnetjsonnetの成果物を1ファイルでなく、複数ファイルへ出力したい。
Getting Startedに思いっきり書いてあった。
$ cat multi.jsonnet
{
'a.json': {
a: 'foo',
},
'b.json': {
b: 'bar',
},
}
こんな感じで {"FILE_NAME": "OBJECT", ...}
として記述するだけ。
-m
オプションでファイルごとに出力される。
$ jsonnet -h | grep -A1 multi
-m / --multi <dir> Write multiple files to the directory, list files
on stdout
$ jsonnet -m dist multi.jsonnet
dist/a.json
dist/b.json
$ cat dist/a.json
{
"a": "foo"
}
$ cat dist/b.json
{
"b": "bar"
}
ちなみに -c
オプションでtargetディレクトリが存在しない場合は作成してくれる。
$ jsonnet -h | grep -A1 cre
-c / --create-output-dirs Automatically creates all parent directories for
files
$ jsonnet -c -m dist multi.jsonnet
dist/a.json
dist/b.json
サブディレクトリも作成できる。
$ cat multi.jsonnet
{
'a.json': {
a: 'foo',
},
'b/bb.json': {
b: 'bar',
},
'c/cc/ccc.json': {
c: 'baz',
},
}
$ jsonnet -c -m dist multi.jsonnet
dist/a.json
dist/b/bb.json
dist/c/cc/ccc.json
$ tree dist
dist
├── a.json
├── b
│ └── bb.json
└── c
└── cc
└── ccc.json
3 directories, 3 files