69 lines
2.7 KiB
Plaintext
69 lines
2.7 KiB
Plaintext
# Takes iditacards output json and produces the dynamic ninja build
|
|
|
|
def expandout:
|
|
to_entries[] | .value + { name: .key };
|
|
|
|
def everything:
|
|
(
|
|
(.assets | map_values(. + { pseudo: false })),
|
|
(.pseudoassets | map_values(. + { pseudo: true }))
|
|
) | expandout;
|
|
|
|
def cuesources:
|
|
$ARGS.positional | join(" ");
|
|
|
|
"# Generated from configure.jq, do not edit this file!",
|
|
"",
|
|
"root = .",
|
|
"",
|
|
"rule configure",
|
|
" description = recreate build.ninja using configure.jq via configure.sh",
|
|
" command = bash configure.sh > build.ninja",
|
|
" generator = 1",
|
|
" restat = 1",
|
|
"",
|
|
"build build.ninja: configure | configure.jq configure.sh \(cuesources)",
|
|
"include rules.ninja",
|
|
"",
|
|
"build output/everything.json: cuegen \(cuesources)",
|
|
" filter = .",
|
|
"", (
|
|
everything | (
|
|
select(.kind == "template") |
|
|
.w = (.size | split("x")[0]) |
|
|
.h = (.size | split("x")[1]) |
|
|
.rawsuffix = (if .print then "raw." else "" end) |
|
|
"build output/\(.name).json: extract output/everything.json",
|
|
" filter = --arg asset '\(.name)' '.assets[$$asset].data'",
|
|
"build output/\(.name).tex: template2tex output/\(.name).json | templates/\(.template)",
|
|
" template = templates/\(.template)",
|
|
"build output/\(.name).pdf: tex2pdf output/\(.name).tex || output/\(.name).pdf.dd",
|
|
" dyndep = output/\(.name).pdf.dd",
|
|
"build output/\(.name).pdf.dd: scantex output/\(.name).tex",
|
|
"build output/\(.name).\(.rawsuffix)png: pdf2png output/\(.name).pdf",
|
|
" w = \(.w)",
|
|
" h = \(.h)",
|
|
(select(.print) | "build output/\(.name).png: convert output/\(.name).raw.png"),
|
|
(select(.print) | " args = \(.print)")
|
|
),(
|
|
select(.kind == "image") |
|
|
.rawsuffix = (if .print then "raw." else "" end) |
|
|
"build output/\(.name).\(.rawsuffix)png: copy \(.source)",
|
|
(select(.print) | "build output/\(.name).png: convert output/\(.name).raw.png"),
|
|
(select(.print) | " args = \(.print)")
|
|
),(
|
|
select(.kind == "tex") |
|
|
.w = (.size | split("x")[0]) |
|
|
.h = (.size | split("x")[1]) |
|
|
.rawsuffix = (if .print then "raw." else "" end) |
|
|
"build output/\(.name).pdf: tex2pdf \(.source) || output/\(.name).pdf.dd",
|
|
" dyndep = output/\(.name).pdf.dd",
|
|
"build output/\(.name).pdf.dd: scantex \(.source)",
|
|
"build output/\(.name).\(.rawsuffix)png: pdf2png output/\(.name).pdf",
|
|
" w = \(.w)",
|
|
" h = \(.h)",
|
|
(select(.print) | "build output/\(.name).png: convert output/\(.name).raw.png"),
|
|
(select(.print) | " args = \(.print)")
|
|
)
|
|
)
|