Round 352: Sonarqube ext, Snyk ext, Trivy ext, Grype ext, Syft ext (20 commands)

ober

781d1701fbc5a7170ad5f92d5589e7b50c893226

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index db0dc86..6d6520a 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 352 — Sonarqube ext, Snyk ext, Trivy ext, Grype ext, Syft ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| sonarqube-scan | :orange_circle: | SonarQube: run analysis |
+| sonarqube-quality-gate | :orange_circle: | SonarQube: check quality gate |
+| sonarqube-issues | :orange_circle: | SonarQube: list issues |
+| sonarqube-measures | :orange_circle: | SonarQube: project measures |
+| snyk-test | :orange_circle: | Snyk: test vulnerabilities |
+| snyk-monitor | :orange_circle: | Snyk: monitor project |
+| snyk-fix | :orange_circle: | Snyk: apply fixes |
+| snyk-code | :orange_circle: | Snyk: scan code |
+| trivy-image | :orange_circle: | Trivy: scan container image |
+| trivy-filesystem | :orange_circle: | Trivy: scan filesystem |
+| trivy-repo | :orange_circle: | Trivy: scan repository |
+| trivy-sbom | :orange_circle: | Trivy: generate SBOM |
+| grype-scan | :orange_circle: | Grype: scan for vulnerabilities |
+| grype-db-update | :orange_circle: | Grype: update database |
+| grype-db-status | :orange_circle: | Grype: database status |
+| grype-config | :orange_circle: | Grype: show configuration |
+| syft-scan | :orange_circle: | Syft: scan for packages |
+| syft-packages | :orange_circle: | Syft: list packages |
+| syft-cataloger | :orange_circle: | Syft: list catalogers |
+| syft-convert | :orange_circle: | Syft: convert SBOM format |
+
 ### Round 351 — ArgoCD ext, FluxCD ext, Tekton ext, Spinnaker ext, Jenkins ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index e563170..d875ec2 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -25609,3 +25609,53 @@
 (def (cmd-jenkins-queue app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Jenkins: showing build queue")))
+
+;;; Round 352 — Trivy ext, Grype ext, Syft ext (batch 2)
+
+(def (cmd-trivy-repo app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Trivy scan repo: "
+      (lambda (repo)
+        (echo-message! echo (str "Trivy: scanning repo " repo))))))
+
+(def (cmd-trivy-sbom app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Trivy: generating SBOM")))
+
+(def (cmd-grype-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Grype scan target: "
+      (lambda (target)
+        (echo-message! echo (str "Grype: scanning " target))))))
+
+(def (cmd-grype-db-update app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Grype: updating vulnerability database")))
+
+(def (cmd-grype-db-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Grype: showing database status")))
+
+(def (cmd-grype-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Grype: showing configuration")))
+
+(def (cmd-syft-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Syft scan target: "
+      (lambda (target)
+        (echo-message! echo (str "Syft: scanning " target))))))
+
+(def (cmd-syft-packages app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Syft: listing packages")))
+
+(def (cmd-syft-cataloger app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Syft: listing catalogers")))
+
+(def (cmd-syft-convert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Syft convert format: "
+      (lambda (fmt)
+        (echo-message! echo (str "Syft: converting SBOM to " fmt))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 2980227..0390530 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26324,3 +26324,49 @@
 (def (cmd-tekton-tasks app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Tekton: listing tasks")))
+
+;;; Round 352 — Sonarqube ext, Snyk ext, Trivy ext, Grype ext, Syft ext (batch 1)
+
+(def (cmd-sonarqube-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SonarQube: running analysis")))
+
+(def (cmd-sonarqube-quality-gate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SonarQube: checking quality gate")))
+
+(def (cmd-sonarqube-issues app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SonarQube: listing issues")))
+
+(def (cmd-sonarqube-measures app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SonarQube: showing project measures")))
+
+(def (cmd-snyk-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Snyk: testing for vulnerabilities")))
+
+(def (cmd-snyk-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Snyk: monitoring project")))
+
+(def (cmd-snyk-fix app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Snyk: applying fixes")))
+
+(def (cmd-snyk-code app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Snyk: scanning code for issues")))
+
+(def (cmd-trivy-image app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Trivy scan image: "
+      (lambda (img)
+        (echo-message! echo (str "Trivy: scanning image " img))))))
+
+(def (cmd-trivy-filesystem app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Trivy scan path: "
+      (lambda (path)
+        (echo-message! echo (str "Trivy: scanning filesystem " path))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 1d1a2fa..692c256 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8826,4 +8826,26 @@
   (register-command! 'jenkins-build cmd-jenkins-build)
   (register-command! 'jenkins-console cmd-jenkins-console)
   (register-command! 'jenkins-queue cmd-jenkins-queue)
+
+  ;; Round 352 — Sonarqube ext, Snyk ext, Trivy ext, Grype ext, Syft ext
+  (register-command! 'sonarqube-scan cmd-sonarqube-scan)
+  (register-command! 'sonarqube-quality-gate cmd-sonarqube-quality-gate)
+  (register-command! 'sonarqube-issues cmd-sonarqube-issues)
+  (register-command! 'sonarqube-measures cmd-sonarqube-measures)
+  (register-command! 'snyk-test cmd-snyk-test)
+  (register-command! 'snyk-monitor cmd-snyk-monitor)
+  (register-command! 'snyk-fix cmd-snyk-fix)
+  (register-command! 'snyk-code cmd-snyk-code)
+  (register-command! 'trivy-image cmd-trivy-image)
+  (register-command! 'trivy-filesystem cmd-trivy-filesystem)
+  (register-command! 'trivy-repo cmd-trivy-repo)
+  (register-command! 'trivy-sbom cmd-trivy-sbom)
+  (register-command! 'grype-scan cmd-grype-scan)
+  (register-command! 'grype-db-update cmd-grype-db-update)
+  (register-command! 'grype-db-status cmd-grype-db-status)
+  (register-command! 'grype-config cmd-grype-config)
+  (register-command! 'syft-scan cmd-syft-scan)
+  (register-command! 'syft-packages cmd-syft-packages)
+  (register-command! 'syft-cataloger cmd-syft-cataloger)
+  (register-command! 'syft-convert cmd-syft-convert)
 )