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