Ejemplo n.º 1
0
def copy_components(project_dir, bootstrap_dir):
    """
    Copies the components from the bootstrap directory
    into the project directory.  Returns a list of all the files
    that were installed.
    """
    project = process_project.load_project(project_dir, bootstrap_dir)
    components = process_component.load_components(os.path.join(bootstrap_dir, "components"), project.component_names)

    # Copy all the components returned, not just the requested ones.
    to_copy = {}
    for component in components:
        for cat in component.provides_categories:
            if cat not in CATEGORIES:
                print("*** Found un-registered category " + cat)
                CATEGORIES.append(cat)
            if cat not in to_copy:
                to_copy[cat] = []
            to_copy[cat].append(component.provides(cat, components))

    generated = {}
    copied = {}
    for (cat, name_paths) in to_copy.items():
        outdir = project.map_category_to_dir(cat)
        for name_path_map in name_paths:
            for (outname, src) in name_path_map.items():
                dest = os.path.join(outdir, outname)
                if dest in generated:
                    raise Exception("two or more components write to the same place (" + dest + ")")
                generated[dest] = True
                copied.update(_copy_struct(src, dest, project))
    return list(copied.keys())
Ejemplo n.º 2
0
def copy_components(project_dir, bootstrap_dir):
    """
    Copies the components from the bootstrap directory
    into the project directory.  Returns a list of all the files
    that were installed.
    """
    project = process_project.load_project(project_dir, bootstrap_dir)
    components = process_component.load_components(
        os.path.join(bootstrap_dir, "components"), project.component_names)

    # Copy all the components returned, not just the requested ones.
    to_copy = {}
    for component in components:
        for cat in component.provides_categories:
            if cat not in CATEGORIES:
                print("*** Found un-registered category " + cat)
                CATEGORIES.append(cat)
            if cat not in to_copy:
                to_copy[cat] = []
            to_copy[cat].append(component.provides(cat, components))

    generated = {}
    copied = {}
    for (cat, name_paths) in to_copy.items():
        outdir = project.map_category_to_dir(cat)
        for name_path_map in name_paths:
            for (outname, src) in name_path_map.items():
                dest = os.path.join(outdir, outname)
                if dest in generated:
                    raise Exception(
                        "two or more components write to the same place (" +
                        dest + ")")
                generated[dest] = True
                copied.update(_copy_struct(src, dest, project))
    return list(copied.keys())