Skip to content

Commit 4e610cf

Browse files
committed
update on gitmodule parser
1 parent 8f28857 commit 4e610cf

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

scripts/sbom_fetcher.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -185,28 +185,39 @@ def _parse_rust(repo: Path) -> List[dict]:
185185
# Git submodules: .gitmodules
186186

187187
def _parse_gitmodules(repo: Path) -> List[dict]:
188-
results = []
189188
gm = repo / ".gitmodules"
190189
if not gm.exists():
191-
return results
192-
content = _read_text(gm) or ""
193-
current = {}
194-
for line in content.splitlines():
195-
line = line.strip()
190+
return []
191+
content = (gm.read_text(encoding="utf-8", errors="ignore") or "")
192+
entries: List[dict] = []
193+
current: dict = {}
194+
for raw in content.splitlines():
195+
line = raw.strip()
196+
if not line or line.startswith(("#", ";")):
197+
continue
196198
if line.startswith("[submodule"):
197199
if current:
198-
results.append(current)
199-
current = {"package_manager": "gitmodules", "dependency_scope": "submodule", "source_type": "submodule", "direct": True}
200+
entries.append(current)
201+
current = {
202+
"package_manager": "gitmodules",
203+
"dependency_scope": "submodule",
204+
"source_type": "submodule",
205+
"direct": True,
206+
}
207+
m = re.search(r"\[submodule\s+\"([^\"]+)\"\]", line)
208+
if m:
209+
current["name"] = m.group(1)
200210
elif "=" in line:
201211
k, v = [x.strip() for x in line.split("=", 1)]
202212
current[k] = v
203213
if current:
204-
results.append(current)
205-
final = []
206-
for entry in results:
207-
name = entry.get("submodule") or entry.get("name") or entry.get("path") or ""
214+
entries.append(current)
215+
216+
results: List[dict] = []
217+
for entry in entries:
218+
name = entry.get("name") or entry.get("path") or ""
208219
url = entry.get("url") or ""
209-
final.append({
220+
results.append({
210221
"package_manager": "gitmodules",
211222
"dependency_name": name,
212223
"dependency_version_requirement": url,
@@ -215,7 +226,7 @@ def _parse_gitmodules(repo: Path) -> List[dict]:
215226
"source_type": "submodule",
216227
"direct": True,
217228
})
218-
return final
229+
return results
219230

220231

221232
# Foundry: foundry.toml, lib/*

0 commit comments

Comments
 (0)