Round 346: RabbitMQ ext, Kafka ext, NATS ext, Redis ext, Memcached ext (20 commands)

ober

55111d51988a0f2be90ad3620193020c8dfefc7d

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index f8b0926..1af1b27 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 346 — RabbitMQ ext, Kafka ext, NATS ext, Redis ext, Memcached ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| rabbitmq-policies | :orange_circle: | RabbitMQ: list policies |
+| rabbitmq-users | :orange_circle: | RabbitMQ: list users |
+| rabbitmq-connections | :orange_circle: | RabbitMQ: list connections |
+| rabbitmq-vhosts | :orange_circle: | RabbitMQ: list virtual hosts |
+| kafka-acls | :orange_circle: | Kafka: list ACLs |
+| kafka-consumers | :orange_circle: | Kafka: describe consumer group |
+| kafka-groups | :orange_circle: | Kafka: list consumer groups |
+| kafka-describe | :orange_circle: | Kafka: describe topic |
+| nats-pub | :orange_circle: | NATS: publish to subject |
+| nats-sub | :orange_circle: | NATS: subscribe to subject |
+| nats-stream | :orange_circle: | NATS: list JetStream streams |
+| nats-server | :orange_circle: | NATS: show server info |
+| redis-info | :orange_circle: | Redis: show server info |
+| redis-dbsize | :orange_circle: | Redis: show database size |
+| redis-monitor | :orange_circle: | Redis: monitor commands |
+| redis-slowlog | :orange_circle: | Redis: show slow log |
+| memcached-version | :orange_circle: | Memcached: show version |
+| memcached-slabs | :orange_circle: | Memcached: slab stats |
+| memcached-items | :orange_circle: | Memcached: item stats |
+| memcached-connections | :orange_circle: | Memcached: connection stats |
+
 ### Round 345 — Elasticsearch ext, Kibana ext, Fluentd ext, Logstash ext, Beats ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 85d526c..bd3f4b4 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -25335,3 +25335,45 @@
 (def (cmd-beats-keystore app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Beats: managing keystore")))
+
+;;; Round 346 — NATS ext, Redis ext, Memcached ext (batch 2)
+
+(def (cmd-nats-stream app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NATS: listing JetStream streams")))
+
+(def (cmd-nats-server app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NATS: showing server info")))
+
+(def (cmd-redis-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: showing server info")))
+
+(def (cmd-redis-dbsize app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: showing database size")))
+
+(def (cmd-redis-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: monitoring commands")))
+
+(def (cmd-redis-slowlog app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: showing slow log")))
+
+(def (cmd-memcached-version app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: showing version")))
+
+(def (cmd-memcached-slabs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: showing slab stats")))
+
+(def (cmd-memcached-items app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: showing item stats")))
+
+(def (cmd-memcached-connections app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Memcached: showing connection stats")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 1e5dffd..95d10b4 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26044,3 +26044,53 @@
 (def (cmd-fluentd-plugins app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Fluentd: listing plugins")))
+
+;;; Round 346 — RabbitMQ ext, Kafka ext, NATS ext, Redis ext, Memcached ext (batch 1)
+
+(def (cmd-rabbitmq-policies app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing policies")))
+
+(def (cmd-rabbitmq-users app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing users")))
+
+(def (cmd-rabbitmq-connections app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing connections")))
+
+(def (cmd-rabbitmq-vhosts app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "RabbitMQ: listing virtual hosts")))
+
+(def (cmd-kafka-acls app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kafka: listing ACLs")))
+
+(def (cmd-kafka-consumers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Kafka consumer group: "
+      (lambda (grp)
+        (echo-message! echo (str "Kafka: describing consumer group " grp))))))
+
+(def (cmd-kafka-groups app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kafka: listing consumer groups")))
+
+(def (cmd-kafka-describe app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Kafka describe topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Kafka: describing topic " topic))))))
+
+(def (cmd-nats-pub app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "NATS publish subject: "
+      (lambda (subj)
+        (echo-message! echo (str "NATS: publishing to " subj))))))
+
+(def (cmd-nats-sub app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "NATS subscribe subject: "
+      (lambda (subj)
+        (echo-message! echo (str "NATS: subscribing to " subj))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index f26673c..8197461 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8694,4 +8694,26 @@
   (register-command! 'beats-modules cmd-beats-modules)
   (register-command! 'beats-setup cmd-beats-setup)
   (register-command! 'beats-keystore cmd-beats-keystore)
+
+  ;; Round 346 — RabbitMQ ext, Kafka ext, NATS ext, Redis ext, Memcached ext
+  (register-command! 'rabbitmq-policies cmd-rabbitmq-policies)
+  (register-command! 'rabbitmq-users cmd-rabbitmq-users)
+  (register-command! 'rabbitmq-connections cmd-rabbitmq-connections)
+  (register-command! 'rabbitmq-vhosts cmd-rabbitmq-vhosts)
+  (register-command! 'kafka-acls cmd-kafka-acls)
+  (register-command! 'kafka-consumers cmd-kafka-consumers)
+  (register-command! 'kafka-groups cmd-kafka-groups)
+  (register-command! 'kafka-describe cmd-kafka-describe)
+  (register-command! 'nats-pub cmd-nats-pub)
+  (register-command! 'nats-sub cmd-nats-sub)
+  (register-command! 'nats-stream cmd-nats-stream)
+  (register-command! 'nats-server cmd-nats-server)
+  (register-command! 'redis-info cmd-redis-info)
+  (register-command! 'redis-dbsize cmd-redis-dbsize)
+  (register-command! 'redis-monitor cmd-redis-monitor)
+  (register-command! 'redis-slowlog cmd-redis-slowlog)
+  (register-command! 'memcached-version cmd-memcached-version)
+  (register-command! 'memcached-slabs cmd-memcached-slabs)
+  (register-command! 'memcached-items cmd-memcached-items)
+  (register-command! 'memcached-connections cmd-memcached-connections)
 )