74 lines
1.9 KiB
Python
Executable file
74 lines
1.9 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import os
|
|
import pathlib
|
|
import shlex
|
|
import sys
|
|
import yaml
|
|
|
|
resources = pathlib.Path("resources")
|
|
|
|
MAKE_SCAD_STL = """
|
|
-include {target}.d
|
|
{target}: {src}
|
|
\tmkdir -p $(dir {target})
|
|
\topenscad -o {target}.tmp.stl -d {target}.d $(SCAD_FLAGS) {flags} {src}
|
|
\tadmesh -b {target} {target}.tmp.stl
|
|
\trm -f {target}.tmp.stl
|
|
default:: {target}
|
|
"""
|
|
|
|
MAKE_SCAD_SVG = """
|
|
-include {target}.d
|
|
{target}: {src}
|
|
\tmkdir -p $(dir {target})
|
|
\topenscad -o {target}.tmp.svg -d {target}.d $(SCAD_FLAGS) {flags} {src}
|
|
\tadmesh -b {target} {target}.tmp.svg
|
|
\trm -f {target}.tmp.svg
|
|
default:: {target}
|
|
"""
|
|
|
|
MAKE_SCAD_PNG = """
|
|
-include {target}.d
|
|
{target}: {src}
|
|
\tmkdir -p $(dir {target})
|
|
\topenscad -o {target} -d {target}.d $(SCAD_FLAGS) {flags} {src}
|
|
default:: {target}
|
|
"""
|
|
|
|
MAKE_STL_PNG = """
|
|
-include {target}.d
|
|
{target}: {src}
|
|
\tmkdir -p $(dir {target})
|
|
\topenscad -o {target} -d {target}.d $(SCAD_FLAGS) {flags} -Dinput=\\\"{src}\\\" readfile.scad
|
|
default:: {target}
|
|
"""
|
|
|
|
with open(sys.argv[1]) as f:
|
|
doc = yaml.safe_load(f)
|
|
|
|
for row in doc:
|
|
flags = row.get('flags', '')
|
|
if isinstance(flags, str):
|
|
flags = flags.split()
|
|
flags = " ".join(shlex.quote(f) for f in flags)
|
|
scad = row.get('scad', '')
|
|
stl = row.get('stl', '')
|
|
svg = row.get('svg', '')
|
|
|
|
if stl.startswith('gen/'):
|
|
print(MAKE_SCAD_STL.format(
|
|
**{'target': resources / stl, 'src': resources / scad, 'flags': flags}))
|
|
|
|
if svg.startswith('gen/'):
|
|
print(MAKE_SCAD_SVG.format(
|
|
**{'target': resources / svg, 'src': resources / scad, 'flags': flags}))
|
|
|
|
for png in row.get('images', []):
|
|
if png.startswith('gen/'):
|
|
if scad:
|
|
print(MAKE_SCAD_PNG.format(
|
|
**{'target': resources / png, 'src': resources / scad, 'flags': flags}))
|
|
else:
|
|
print(MAKE_STL_PNG.format(
|
|
**{'target': resources / png, 'src': resources / stl, 'flags': flags}))
|