@@ -463,10 +463,38 @@ sbom: ## 🛡️ Generate SBOM & security report
463
463
@python3 -m venv " $( VENV_DIR) .sbom"
464
464
@/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pip install --upgrade pip setuptools pdm uv && python3 -m uv pip install .[dev]"
465
465
@/bin/bash -c " source $( VENV_DIR) /bin/activate && python3 -m uv pip install cyclonedx-bom sbom2doc"
466
- @/bin/bash -c " source $( VENV_DIR) /bin/activate && python3 -m cyclonedx_py environment --validate '$( VENV_DIR) .sbom' --pyproject pyproject.toml --gather-license-texts > $( PROJECT_NAME) .sbom.json"
467
- @/bin/bash -c " source $( VENV_DIR) /bin/activate && sbom2doc -i $( PROJECT_NAME) .sbom.json -f markdown -o $( DOCS_DIR) /docs/test/sbom.md"
468
- @trivy sbom $(PROJECT_NAME ) .sbom.json | tee -a $(DOCS_DIR ) /docs/test/sbom.md
469
- @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pdm outdated | tee -a $( DOCS_DIR) /docs/test/sbom.md"
466
+ @echo " 🔍 Generating SBOM from environment..."
467
+ @/bin/bash -c " source $( VENV_DIR) /bin/activate && \
468
+ python -m cyclonedx_py environment \
469
+ --output-format XML \
470
+ --output-file $(PROJECT_NAME ) .sbom.xml \
471
+ --no-validate \
472
+ ' $(VENV_DIR).sbom/bin/python' "
473
+ @echo " 📁 Creating docs directory structure..."
474
+ @mkdir -p $(DOCS_DIR ) /docs/test
475
+ @echo " 📋 Converting SBOM to markdown..."
476
+ @/bin/bash -c " source $( VENV_DIR) /bin/activate && \
477
+ sbom2doc -i $(PROJECT_NAME ) .sbom.xml -f markdown -o $(DOCS_DIR ) /docs/test/sbom.md"
478
+ @echo " 🔒 Running security scans..."
479
+ @/bin/bash -c " if command -v trivy >/dev/null 2>&1; then \
480
+ echo ' ## Trivy Vulnerability Scan' >> $(DOCS_DIR ) /docs/test/sbom.md; \
481
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md; \
482
+ trivy sbom $(PROJECT_NAME ) .sbom.xml | tee -a $(DOCS_DIR ) /docs/test/sbom.md; \
483
+ else \
484
+ echo ' ⚠️ trivy not found, skipping vulnerability scan' ; \
485
+ echo ' ## Security Scan' >> $(DOCS_DIR ) /docs/test/sbom.md; \
486
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md; \
487
+ echo ' Trivy not available - install with: brew install trivy' >> $(DOCS_DIR ) /docs/test/sbom.md; \
488
+ fi"
489
+ @echo " 📊 Checking for outdated packages..."
490
+ @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && \
491
+ echo ' ## Outdated Packages' >> $(DOCS_DIR ) /docs/test/sbom.md && \
492
+ echo ' ' >> $(DOCS_DIR ) /docs/test/sbom.md && \
493
+ (python3 -m pdm outdated || echo ' PDM outdated check failed' ) | tee -a $(DOCS_DIR ) /docs/test/sbom.md"
494
+ @echo " ✅ SBOM generation complete"
495
+ @echo " 📄 Files generated:"
496
+ @echo " - $( PROJECT_NAME) .sbom.xml (CycloneDX XML format)"
497
+ @echo " - $( DOCS_DIR) /docs/test/sbom.md (Markdown report)"
470
498
471
499
pytype : # # 🧠 Pytype static type analysis
472
500
@echo " 🧠 Pytype analysis…"
0 commit comments