]> git.eshelyaron.com Git - kubed.git/commitdiff
Teach 'kubed-patch' about buffer-local contexts
authorEshel Yaron <me@eshelyaron.com>
Wed, 14 Aug 2024 19:10:33 +0000 (21:10 +0200)
committerEshel Yaron <me@eshelyaron.com>
Thu, 15 Aug 2024 07:08:15 +0000 (09:08 +0200)
* kubed.el (kubed-patch): Use buffer-local context and
handle prefix arg.
* kubed-transient.el (kubed-transient-patch): Add
"--context=" infix argument.

kubed-transient.el
kubed.el

index 2b03ffb4195fd4e834a1af023c7ab1e48155c5c0..c63819a54ad2945315c9afe57780bfc89ce64341 100644 (file)
    ["Options"
     ("-n" "Namespace" "--namespace="
      :prompt "Namespace" :reader kubed-transient-read-namespace)
+    ("-C" "Context" "--context="
+     :prompt "Context" :reader kubed-transient-read-context)
     ("-t" "Patch type" "--type="
      :prompt "Patch type: "
      :choices ("strategic" "merge" "json"))]]
index 2dcbba6238e34319a613f371600ef4399371ab54..02aa2e2fb7ce54722eb7de08b77b319d64cbfc97 100644 (file)
--- a/kubed.el
+++ b/kubed.el
@@ -2908,11 +2908,12 @@ Optional argument NAMESPACE is the namespace in which to look for NAME.
 STRATEGY is the patch type to use, one of \"json\", \"merge\" and
 \"strategic\", defaulting to \"strategic\".
 
-Interactively, prompt for TYPE, NAME and PATCH."
+Interactively, prompt for TYPE, NAME and PATCH.  With a prefix argument,
+prompt for NAMESPACE too.  With a double prefix argument, also prompt
+for CONTEXT."
   (interactive
-   (let ((type (kubed-read-resource-type "Resource type to patch"))
-         (context nil) (namespace nil) (strategy nil))
-     (dolist (arg (kubed-transient-args 'kubed-transient-apply))
+   (let ((type nil) (context nil) (namespace nil) (strategy nil))
+     (dolist (arg (kubed-transient-args 'kubed-transient-patch))
        (cond
         ((string-match "--namespace=\\(.+\\)" arg)
          (setq namespace (match-string 1 arg)))
@@ -2920,8 +2921,20 @@ Interactively, prompt for TYPE, NAME and PATCH."
          (setq context (match-string 1 arg)))
         ((string-match "--type=\\(.+\\)" arg)
          (setq strategy (match-string 1 arg)))))
-     (list type
-           (kubed-read-resource-name type "Resource to patch")
+     (unless context
+       (setq context
+             (let ((cxt (kubed-local-context)))
+               (if (equal current-prefix-arg '(16))
+                   (kubed-read-context "Context" cxt)
+                 cxt))))
+     (unless namespace
+       (setq namespace
+             (let ((cur (kubed-local-namespace context)))
+               (if current-prefix-arg
+                   (kubed-read-namespace "Namespace" cur nil context)
+                 cur))))
+     (list (kubed-read-resource-type "Resource type to patch" nil context)
+           (kubed-read-resource-name type "Resource to patch" nil nil context namespace)
            (kubed-read-patch) context namespace strategy)))
   (message "Applying patch to `%s'..." name)
   (unless (zerop