Example #1
0
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)
Example #2
0
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)