partsdb-labelgen/label_gen/run.py

51 lines
1.4 KiB
Python

import argparse
import yaml
import logging
import subprocess
from .generator import Label, Labelgen
parser = argparse.ArgumentParser()
parser.add_argument(
"labels", nargs="?", default=None, help="file with label definitions"
)
parser.add_argument(
"--outline", action="store_true", help="add outline rectangle to each label"
)
parser.add_argument(
"--skip", type=int, default=0, help="number of label positions to skip"
)
parser.add_argument(
"--uuid", action="store_true", help="fill empty space with DataMatrix UUID's"
)
parser.add_argument("--empty", action="store_true", help="add empty labels")
def run():
args = parser.parse_args()
if args.labels is not None:
with open(args.labels) as f:
parts = yaml.safe_load(f)
else:
parts = []
l = Labelgen(y_offset=0.3, x_offset=-1.0, outline=args.outline, add_uuid=args.uuid)
for field in range(1 + args.skip, 25):
try:
part = parts[field]
l.set_label(field, Label.from_dict(part))
except IndexError:
if args.empty:
l.set_label(field, Label.empty())
else:
pass
except TypeError:
logging.exception(f"label generation failed for {field} {part}")
if args.empty:
l.set_label(field, Label.empty())
l.gen_svg("out/montage.svg")
subprocess.call("inkscape -f out/montage.svg -A out/montage.pdf".split(" "))