Round 348: Nginx ext, HAProxy ext, Envoy ext, Traefik ext, Caddy ext (20 commands)

ober

6ba6153e28f68b676cb981df09086ba06e77b424

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 2fa8c90..2765568 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 348 — Nginx ext, HAProxy ext, Envoy ext, Traefik ext, Caddy ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| nginx-status | :orange_circle: | Nginx: show stub status |
+| nginx-config | :orange_circle: | Nginx: show configuration |
+| nginx-reload | :orange_circle: | Nginx: reload configuration |
+| nginx-test | :orange_circle: | Nginx: test configuration |
+| haproxy-stats | :orange_circle: | HAProxy: show statistics |
+| haproxy-info | :orange_circle: | HAProxy: show info |
+| haproxy-backends | :orange_circle: | HAProxy: list backends |
+| haproxy-servers | :orange_circle: | HAProxy: list servers |
+| envoy-clusters | :orange_circle: | Envoy: list clusters |
+| envoy-listeners | :orange_circle: | Envoy: list listeners |
+| envoy-routes | :orange_circle: | Envoy: list routes |
+| envoy-stats | :orange_circle: | Envoy: show statistics |
+| traefik-routers | :orange_circle: | Traefik: list routers |
+| traefik-services | :orange_circle: | Traefik: list services |
+| traefik-middlewares | :orange_circle: | Traefik: list middlewares |
+| traefik-entrypoints | :orange_circle: | Traefik: list entrypoints |
+| caddy-config | :orange_circle: | Caddy: show configuration |
+| caddy-reload | :orange_circle: | Caddy: reload configuration |
+| caddy-reverse-proxy | :orange_circle: | Caddy: reverse proxy setup |
+| caddy-adapt | :orange_circle: | Caddy: adapt Caddyfile to JSON |
+
 ### Round 347 — PostgreSQL ext, MySQL ext, ClickHouse ext, ScyllaDB ext, TiDB ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index d31e55d..eec277c 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -25427,3 +25427,47 @@
     (echo-read-string echo "TiDB database: "
       (lambda (db)
         (echo-message! echo (str "TiDB: listing tables in " db))))))
+
+;;; Round 348 — Envoy ext, Traefik ext, Caddy ext (batch 2)
+
+(def (cmd-envoy-routes app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Envoy: listing routes")))
+
+(def (cmd-envoy-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Envoy: showing statistics")))
+
+(def (cmd-traefik-routers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Traefik: listing routers")))
+
+(def (cmd-traefik-services app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Traefik: listing services")))
+
+(def (cmd-traefik-middlewares app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Traefik: listing middlewares")))
+
+(def (cmd-traefik-entrypoints app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Traefik: listing entrypoints")))
+
+(def (cmd-caddy-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Caddy: showing configuration")))
+
+(def (cmd-caddy-reload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Caddy: reloading configuration")))
+
+(def (cmd-caddy-reverse-proxy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Caddy reverse proxy upstream: "
+      (lambda (upstream)
+        (echo-message! echo (str "Caddy: reverse proxying to " upstream))))))
+
+(def (cmd-caddy-adapt app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Caddy: adapting Caddyfile to JSON")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index d784bb6..f5100ff 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26142,3 +26142,45 @@
     (echo-read-string echo "ClickHouse database: "
       (lambda (db)
         (echo-message! echo (str "ClickHouse: listing tables in " db))))))
+
+;;; Round 348 — Nginx ext, HAProxy ext, Envoy ext, Traefik ext, Caddy ext (batch 1)
+
+(def (cmd-nginx-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nginx: showing stub status")))
+
+(def (cmd-nginx-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nginx: showing configuration")))
+
+(def (cmd-nginx-reload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nginx: reloading configuration")))
+
+(def (cmd-nginx-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nginx: testing configuration")))
+
+(def (cmd-haproxy-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "HAProxy: showing statistics")))
+
+(def (cmd-haproxy-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "HAProxy: showing info")))
+
+(def (cmd-haproxy-backends app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "HAProxy: listing backends")))
+
+(def (cmd-haproxy-servers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "HAProxy: listing servers")))
+
+(def (cmd-envoy-clusters app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Envoy: listing clusters")))
+
+(def (cmd-envoy-listeners app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Envoy: listing listeners")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index dbd571e..14f98ad 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8738,4 +8738,26 @@
   (register-command! 'tidb-regions cmd-tidb-regions)
   (register-command! 'tidb-stores cmd-tidb-stores)
   (register-command! 'tidb-tables cmd-tidb-tables)
+
+  ;; Round 348 — Nginx ext, HAProxy ext, Envoy ext, Traefik ext, Caddy ext
+  (register-command! 'nginx-status cmd-nginx-status)
+  (register-command! 'nginx-config cmd-nginx-config)
+  (register-command! 'nginx-reload cmd-nginx-reload)
+  (register-command! 'nginx-test cmd-nginx-test)
+  (register-command! 'haproxy-stats cmd-haproxy-stats)
+  (register-command! 'haproxy-info cmd-haproxy-info)
+  (register-command! 'haproxy-backends cmd-haproxy-backends)
+  (register-command! 'haproxy-servers cmd-haproxy-servers)
+  (register-command! 'envoy-clusters cmd-envoy-clusters)
+  (register-command! 'envoy-listeners cmd-envoy-listeners)
+  (register-command! 'envoy-routes cmd-envoy-routes)
+  (register-command! 'envoy-stats cmd-envoy-stats)
+  (register-command! 'traefik-routers cmd-traefik-routers)
+  (register-command! 'traefik-services cmd-traefik-services)
+  (register-command! 'traefik-middlewares cmd-traefik-middlewares)
+  (register-command! 'traefik-entrypoints cmd-traefik-entrypoints)
+  (register-command! 'caddy-config cmd-caddy-config)
+  (register-command! 'caddy-reload cmd-caddy-reload)
+  (register-command! 'caddy-reverse-proxy cmd-caddy-reverse-proxy)
+  (register-command! 'caddy-adapt cmd-caddy-adapt)
 )