def main(): """ The tendril-genpcbpricing script entry point. """ parser = _get_parser() args = parser.parse_args() force = args.force lazy = args.lazy if args.all: regenerate_all(force=force, lazy=lazy, dry_run=args.dry_run) else: if not len(args.projfolders): parser.print_help() for projfolder in args.projfolders: if not os.path.isabs(projfolder): projfolder = os.path.join(os.getcwd(), projfolder) projfolder = os.path.normpath(projfolder) if not in_directory(projfolder, PROJECTS_ROOT): logger.error( 'Provided directory does not seem to be under the ' 'tendril PROJECTS_ROOT. Skipping ' + projfolder ) continue targets = [projfolder] if args.recurse: lprojects, lpcbs, lcards, lcard_reporoot = \ projects.get_projects(projfolder) targets.extend([lpcbs[x] for x in lpcbs.keys()]) for target in targets: try: if args.dry_run is False: csil.generate_pcb_pricing( target, forceregen=force, noregen=lazy ) logger.info("Checked " + target) else: conffile.ConfigsFile(target) logger.info("Will check " + target) except NoGedaProjectError: # Make a guess. if os.path.split(target)[1] == 'configs.yaml': target == os.path.split(target)[0] if os.path.split(target)[1] == 'schematic': target == os.path.split(target)[0] try: if args.dry_run is False: csil.generate_pcb_pricing( target, forceregen=force, noregen=lazy ) logger.info("Checked " + target) else: conffile.ConfigsFile(target) logger.info("Will check " + target) except NoGedaProjectError: logger.error("No gEDA Project found at " + target)
def regenerate_all(force=False, lazy=False, dry_run=False): """ Regenerates PCB pricing information for all projects. :param force: Regenerate even for up-to-date projects. :param lazy: New projects only. Doesn't regenerate for projects with out-of-date pricing information :param dry_run: Check only. Don't actually generate any documentation. """ for project in projects.pcbs: if dry_run: conffile.ConfigsFile(projects.pcbs[project]) logger.info("Will check " + projects.pcbs[project]) else: logger.info("Checking " + projects.pcbs[project]) csil.generate_pcb_pricing(projects.pcbs[project], forceregen=force, noregen=lazy)