51 lines
1.4 KiB
Python
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(" "))
|