@@ -437,10 +437,39 @@ sbom: ## 🛡️ Generate SBOM & security report
437
437
@python3 -m venv " $( VENV_DIR) .sbom"
438
438
@/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pip install --upgrade pip setuptools pdm uv && python3 -m uv pip install .[dev]"
439
439
@/bin/bash -c " source $( VENV_DIR) /bin/activate && python3 -m uv pip install cyclonedx-bom sbom2doc"
440
- @/bin/bash -c " source $( VENV_DIR) /bin/activate && python -m cyclonedx_py environment --validate '$( VENV_DIR) .sbom' --pyproject pyproject.toml --gather-license-texts > $( PROJECT_NAME) .sbom.json"
441
- @/bin/bash -c " source $( VENV_DIR) /bin/activate && sbom2doc -i $( PROJECT_NAME) .sbom.json -f markdown -o $( DOCS_DIR) /docs/test/sbom.md"
442
- @trivy sbom $(PROJECT_NAME ) .sbom.json | tee -a $(DOCS_DIR ) /docs/test/sbom.md
443
- @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pdm outdated | tee -a $( DOCS_DIR) /docs/test/sbom.md"
440
+ @echo " 🔍 Generating SBOM from environment..."
441
+ @/bin/bash -c " source $( VENV_DIR) /bin/activate && \
442
+ python -m cyclonedx_py environment \
443
+ --output-format XML \
444
+ --output-file $(PROJECT_NAME ) .sbom.xml \
445
+ --no-validate \
446
+ ' $(VENV_DIR).sbom/bin/python' "
447
+ @echo " 📁 Creating docs directory structure..."
448
+ @mkdir -p $(DOCS_DIR ) /docs/test
449
+ @echo " 📋 Converting SBOM to markdown..."
450
+ @/bin/bash -c " source $( VENV_DIR) /bin/activate && \
451
+ sbom2doc -i $(PROJECT_NAME ) .sbom.xml -f markdown -o $(DOCS_DIR ) /docs/test/sbom.md"
452
+ @echo " 🔒 Running security scans..."
453
+ @/bin/bash -c " if command -v trivy >/dev/null 2>&1; then \
454
+ echo ' ## Trivy Vulnerability Scan' >> $(DOCS_DIR ) /docs/test/sbom.md; \
455
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md; \
456
+ trivy sbom $(PROJECT_NAME ) .sbom.xml | tee -a $(DOCS_DIR ) /docs/test/sbom.md; \
457
+ else \
458
+ echo ' ⚠️ trivy not found, skipping vulnerability scan' ; \
459
+ echo ' ## Security Scan' >> $(DOCS_DIR ) /docs/test/sbom.md; \
460
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md; \
461
+ echo ' Trivy not available - install with: brew install trivy' >> $(DOCS_DIR ) /docs/test/sbom.md; \
462
+ fi"
463
+ @echo " 📊 Checking for outdated packages..."
464
+ @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && \
465
+ echo ' ## Outdated Packages' >> $(DOCS_DIR ) /docs/test/sbom.md && \
466
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md && \
467
+ (python3 -m pdm outdated || echo ' PDM outdated check failed' ) | tee -a $(DOCS_DIR ) /docs/test/sbom.md"
468
+ @echo " ✅ SBOM generation complete"
469
+ @echo " ✅ SBOM generation complete"
470
+ @echo " 📄 Files generated:"
471
+ @echo " - $( PROJECT_NAME) .sbom.xml (CycloneDX XML format)"
472
+ @echo " - $( DOCS_DIR) /docs/test/sbom.md (Markdown report)"
444
473
445
474
pytype : # # 🧠 Pytype static type analysis
446
475
@echo " 🧠 Pytype analysis…"
0 commit comments