MCPcopy Create free account
hub / github.com/DevCloudNinjas/DevOps-Projects / discover_projects

Function discover_projects

tools/project_inventory.py:62–81  ·  view source on GitHub ↗

Discover projects from metadata globs.

(repo_root: Path, metadata: dict | None = None)

Source from the content-addressed store, hash-verified

60
61
62def discover_projects(repo_root: Path, metadata: dict | None = None) -> list[Project]:
63 """Discover projects from metadata globs."""
64
65 metadata = metadata or load_metadata(repo_root)
66 projects: dict[str, Project] = {}
67 for root in metadata.get("project_roots", []):
68 pattern = root["glob"]
69 source = root.get("name", pattern)
70 for match in repo_root.glob(pattern):
71 if not match.is_dir():
72 continue
73 relative_path = match.relative_to(repo_root).as_posix()
74 project_id = relative_path.replace("/", "__")
75 projects[relative_path] = Project(
76 id=project_id,
77 path=relative_path,
78 name=match.name,
79 source=source,
80 )
81 return sorted(projects.values(), key=lambda project: project.path)
82
83
84def validate_metadata(repo_root: Path, metadata: dict | None = None) -> list[str]:

Callers 4

validate_metadataFunction · 0.85
validate_projectFunction · 0.85
list_mainFunction · 0.85

Calls 3

load_metadataFunction · 0.85
ProjectClass · 0.85
getMethod · 0.45

Tested by 1