@@ -437,10 +437,39 @@ sbom: ## 🛡️ Generate SBOM & security report
437437 @python3 -m venv " $( VENV_DIR) .sbom"
438438 @/bin/bash -c " source $( VENV_DIR) .sbom/bin/activate && python3 -m pip install --upgrade pip setuptools pdm uv && python3 -m uv pip install .[dev]"
439439 @/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)"
444473
445474pytype : # # 🧠 Pytype static type analysis
446475 @echo " 🧠 Pytype analysis…"
0 commit comments