Round 196: MQTT, Redis, MongoDB, Elasticsearch, Prometheus, Grafana, AWS, Azure, GCP commands

ober

5155cf83baf008d08639c787b84e7fb01dfc9ce0

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 4b4be03..9c9e48b 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 196 — MQTT, Redis, MongoDB, Elasticsearch, Prometheus, Grafana, AWS, Azure, GCP
+
+| Feature | Status | Notes |
+|---|---|---|
+| mqtt-publish-message | :orange_circle: | Publish MQTT message |
+| mqtt-subscribe-topic | :orange_circle: | Subscribe to MQTT topic |
+| mqtt-disconnect | :orange_circle: | Disconnect from MQTT broker |
+| redis-send-command | :orange_circle: | Send Redis command |
+| redis-send-region | :orange_circle: | Send region to Redis |
+| redis-cli-mode | :orange_circle: | Toggle Redis CLI mode |
+| mongodb-find | :orange_circle: | Run MongoDB find query |
+| mongodb-insert | :orange_circle: | Insert MongoDB document |
+| mongodb-shell-mode | :orange_circle: | Toggle MongoDB shell mode |
+| elasticsearch-query | :orange_circle: | Run Elasticsearch query |
+| elasticsearch-index-list | :orange_circle: | List Elasticsearch indices |
+| prometheus-query | :orange_circle: | Execute PromQL query |
+| prometheus-targets | :orange_circle: | List Prometheus targets |
+| grafana-dashboard-list | :orange_circle: | List Grafana dashboards |
+| grafana-dashboard-open | :orange_circle: | Open Grafana dashboard |
+| aws-ec2-list-instances | :orange_circle: | List AWS EC2 instances |
+| aws-s3-list-buckets | :orange_circle: | List AWS S3 buckets |
+| aws-lambda-list-functions | :orange_circle: | List AWS Lambda functions |
+| azure-resource-list | :orange_circle: | List Azure resources |
+| gcp-project-list | :orange_circle: | List GCP projects |
+
 ### Round 195 — Docker-ext, Docker-compose-ext, Kubernetes-ext, Vagrant-ext, Puppet-ext, Chef-ext, Saltstack-ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 3fccdd9..407fc3d 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17990,3 +17990,48 @@
 (def (cmd-saltstack-apply app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Saltstack: applying state...")))
+
+;; Round 196 — Elasticsearch-ext, Prometheus, Grafana, AWS, Azure, GCP
+(def (cmd-elasticsearch-index-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elasticsearch: listing indices")))
+
+(def (cmd-prometheus-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PromQL query: "
+      (lambda (q)
+        (echo-message! echo (str "Prometheus: executing " q))))))
+
+(def (cmd-prometheus-targets app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Prometheus: listing targets")))
+
+(def (cmd-grafana-dashboard-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Grafana: listing dashboards")))
+
+(def (cmd-grafana-dashboard-open app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Dashboard name: "
+      (lambda (name)
+        (echo-message! echo (str "Grafana: opening dashboard " name))))))
+
+(def (cmd-aws-ec2-list-instances app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "AWS EC2: listing instances")))
+
+(def (cmd-aws-s3-list-buckets app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "AWS S3: listing buckets")))
+
+(def (cmd-aws-lambda-list-functions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "AWS Lambda: listing functions")))
+
+(def (cmd-azure-resource-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Azure: listing resources")))
+
+(def (cmd-gcp-project-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GCP: listing projects")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 44d0e9a..eda5273 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18623,3 +18623,62 @@
 (def (cmd-docker-compose-pull app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Docker Compose: pulling images...")))
+
+;; Round 196 — MQTT, Redis, MongoDB, Elasticsearch, Prometheus, Grafana
+(def (cmd-mqtt-publish-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "MQTT topic: "
+      (lambda (topic)
+        (echo-read-string echo "Message: "
+          (lambda (msg)
+            (echo-message! echo (str "MQTT: published to " topic))))))))
+
+(def (cmd-mqtt-subscribe-topic app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Subscribe to MQTT topic: "
+      (lambda (topic)
+        (echo-message! echo (str "MQTT: subscribed to " topic))))))
+
+(def (cmd-mqtt-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MQTT: disconnected from broker")))
+
+(def (cmd-redis-send-command app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Redis command: "
+      (lambda (cmd)
+        (echo-message! echo (str "Redis: " cmd))))))
+
+(def (cmd-redis-send-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Redis: sent region to server")))
+
+(def (cmd-redis-cli-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'redis-cli)
+    (if (mode-enabled? app 'redis-cli)
+      (echo-message! echo "Redis CLI mode enabled")
+      (echo-message! echo "Redis CLI mode disabled"))))
+
+(def (cmd-mongodb-find app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "MongoDB query: "
+      (lambda (q)
+        (echo-message! echo (str "MongoDB: find " q))))))
+
+(def (cmd-mongodb-insert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "MongoDB: inserted document")))
+
+(def (cmd-mongodb-shell-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'mongodb-shell)
+    (if (mode-enabled? app 'mongodb-shell)
+      (echo-message! echo "MongoDB shell mode enabled")
+      (echo-message! echo "MongoDB shell mode disabled"))))
+
+(def (cmd-elasticsearch-query app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Elasticsearch query: "
+      (lambda (q)
+        (echo-message! echo (str "Elasticsearch: querying " q))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 856d703..0e17cb6 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5549,4 +5549,25 @@
   (register-command! 'puppet-lint cmd-puppet-lint)
   (register-command! 'chef-resource-lookup cmd-chef-resource-lookup)
   (register-command! 'saltstack-apply cmd-saltstack-apply)
+  ;; Round 196
+  (register-command! 'mqtt-publish-message cmd-mqtt-publish-message)
+  (register-command! 'mqtt-subscribe-topic cmd-mqtt-subscribe-topic)
+  (register-command! 'mqtt-disconnect cmd-mqtt-disconnect)
+  (register-command! 'redis-send-command cmd-redis-send-command)
+  (register-command! 'redis-send-region cmd-redis-send-region)
+  (register-command! 'redis-cli-mode cmd-redis-cli-mode)
+  (register-command! 'mongodb-find cmd-mongodb-find)
+  (register-command! 'mongodb-insert cmd-mongodb-insert)
+  (register-command! 'mongodb-shell-mode cmd-mongodb-shell-mode)
+  (register-command! 'elasticsearch-query cmd-elasticsearch-query)
+  (register-command! 'elasticsearch-index-list cmd-elasticsearch-index-list)
+  (register-command! 'prometheus-query cmd-prometheus-query)
+  (register-command! 'prometheus-targets cmd-prometheus-targets)
+  (register-command! 'grafana-dashboard-list cmd-grafana-dashboard-list)
+  (register-command! 'grafana-dashboard-open cmd-grafana-dashboard-open)
+  (register-command! 'aws-ec2-list-instances cmd-aws-ec2-list-instances)
+  (register-command! 'aws-s3-list-buckets cmd-aws-s3-list-buckets)
+  (register-command! 'aws-lambda-list-functions cmd-aws-lambda-list-functions)
+  (register-command! 'azure-resource-list cmd-azure-resource-list)
+  (register-command! 'gcp-project-list cmd-gcp-project-list)
 )