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(" "))