@@ -463,10 +463,38 @@ sbom: ## 🛡️ Generate SBOM & security report
463463 @python3 -m venv " $( VENV_DIR) .sbom"
464464 @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pip install --upgrade pip setuptools pdm uv && python3 -m uv pip install .[dev]"
465465 @/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)"
470498
471499pytype : # # 🧠 Pytype static type analysis
472500 @echo " 🧠 Pytype analysis…"
0 commit comments