From: Eshel Yaron Date: Sat, 27 Jul 2024 20:02:30 +0000 (+0200) Subject: * lisp/net/kubed.el (kubed-define-resource): Simplify a bit X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=49212d39d6c2ce514871f20e9ef947ede18f2f8b;p=emacs.git * lisp/net/kubed.el (kubed-define-resource): Simplify a bit --- diff --git a/lisp/net/kubed.el b/lisp/net/kubed.el index 6e8f0cf2088..e59810bcc55 100644 --- a/lisp/net/kubed.el +++ b/lisp/net/kubed.el @@ -428,40 +428,35 @@ of %S, instead of just one." resource plrl-var) Optional argument DEFAULT is the minibuffer default argument." resource) (,read-fun prompt default t)) - ,(if namespaced - `(defun ,desc-fun (,resource &optional k8sns) - ,(format "Return buffer describing Kubernetes %S %s" - resource (upcase (symbol-name resource))) - (let ((buf (get-buffer-create ,buf-name))) - (with-current-buffer buf - (let ((inhibit-read-only t)) - (erase-buffer) - (unless (zerop - (call-process - kubed-kubectl-program nil ,buf-name t "get" - (if k8sns - (concat "--namespace=" k8sns) - "--all-namespaces=false") - ,(symbol-name resource) "--output=yaml" ,resource)) - (error ,(format "`kubectl get %S' failed" resource)))) - (goto-char (point-min)) - (run-hooks 'kubed-yaml-setup-hook)) - buf)) - `(defun ,desc-fun (,resource) - ,(format "Return buffer with description of Kubernetes %S %s" - resource (upcase (symbol-name resource))) - (let ((buf (get-buffer-create ,buf-name))) - (with-current-buffer buf - (let ((inhibit-read-only t)) - (erase-buffer) - (unless (zerop - (call-process - kubed-kubectl-program nil ,buf-name t "get" - ,(symbol-name resource) "--output=yaml" ,resource)) - (error ,(format "`kubectl get %S' failed" resource)))) - (goto-char (point-min)) - (run-hooks 'kubed-yaml-setup-hook)) - buf))) + (defun ,desc-fun (,resource . ,(when namespaced '(&optional k8sns))) + ,(format "Return buffer describing Kubernetes %S %s" + resource (upcase (symbol-name resource))) + (let* ((buf (get-buffer-create ,buf-name)) + (fun (lambda (&optional _ _) + (let ((inhibit-read-only t) + (target (current-buffer))) + (buffer-disable-undo) + (with-temp-buffer + (unless (zerop + (call-process + kubed-kubectl-program nil t nil "get" + ,(symbol-name resource) "--output=yaml" ,resource + . ,(when namespaced + '((if k8sns + (concat "--namespace=" k8sns) + "--all-namespaces=false"))))) + (error ,(format "`kubectl get %S' failed" resource))) + (let ((source (current-buffer))) + (with-current-buffer target + (replace-buffer-contents source) + (set-buffer-modified-p nil) + (buffer-enable-undo)))))))) + (with-current-buffer buf + (funcall fun) + (goto-char (point-min)) + (run-hooks 'kubed-yaml-setup-hook) + (setq-local revert-buffer-function fun)) + buf)) ,(when namespaced `(defun ,read-nms (prompt &optional default multi) @@ -487,19 +482,15 @@ Optional argument DEFAULT is the minibuffer default argument." resource) (ensure-list choice)))) (if multi split (car split))))) - ,(if namespaced - `(defun ,dsp-name (,resource &optional k8sns) - ,(format "Display Kubernetes %S %s." - resource (upcase (symbol-name resource))) - (interactive (if kubed-all-namespaces-mode + (defun ,dsp-name (,resource . ,(when namespaced '(&optional k8sns))) + ,(format "Display Kubernetes %S %s." + resource (upcase (symbol-name resource))) + (interactive ,(if namespaced + `(if kubed-all-namespaces-mode (,read-nms "Display") - (list (,read-fun "Display")))) - (display-buffer (,desc-fun ,resource k8sns))) - `(defun ,dsp-name (,resource) - ,(format "Display Kubernetes %S %s." - resource (upcase (symbol-name resource))) - (interactive (list (,read-fun "Display"))) - (display-buffer (,desc-fun ,resource)))) + (list (,read-fun "Display"))) + `(list (,read-fun "Display")))) + (display-buffer (,desc-fun ,resource . ,(when namespaced '(k8sns))))) (add-hook 'kubed-update-hook #',updt-cmd) @@ -509,33 +500,25 @@ Optional argument DEFAULT is the minibuffer default argument." resource) (setq ,list-var nil) (,updt-cmd)))) - ,(if namespaced - `(defun ,edt-name (,resource &optional k8sns) - ,(format "Edit Kubernetes %S %s." - resource (upcase (symbol-name resource))) - (interactive (if kubed-all-namespaces-mode + (defun ,edt-name (,resource . ,(when namespaced '(&optional k8sns))) + ,(format "Edit Kubernetes %S %s." + resource (upcase (symbol-name resource))) + (interactive ,(if namespaced + `(if kubed-all-namespaces-mode (,read-nms "Edit") - (list (,read-fun "Edit")))) - (unless (bound-and-true-p server-process) (server-start)) - (let ((process-environment - (cons (concat "KUBE_EDITOR=" emacsclient-program-name) - process-environment))) - (start-process ,(format "*kubed-%S-edit*" plrl-var) nil - kubed-kubectl-program "edit" - (if k8sns - (concat "--namespace=" k8sns) - "-o=yaml") - ,(symbol-name resource) ,resource))) - `(defun ,edt-name (,resource) - ,(format "Edit Kubernetes %S %s." resource (upcase (symbol-name resource))) - (interactive (list (,read-fun "Edit"))) - (unless (bound-and-true-p server-process) (server-start)) - (let ((process-environment - (cons (concat "KUBE_EDITOR=" emacsclient-program-name) - process-environment))) - (start-process ,(format "*kubed-%S-edit*" plrl-var) nil - kubed-kubectl-program "edit" - ,(symbol-name resource) ,resource)))) + (list (,read-fun "Edit"))) + `(list (,read-fun "Edit")))) + (unless (bound-and-true-p server-process) (server-start)) + (let ((process-environment + (cons (concat "KUBE_EDITOR=" emacsclient-program-name) + process-environment))) + (start-process ,(format "*kubed-%S-edit*" plrl-var) nil + kubed-kubectl-program "edit" + ,(symbol-name resource) ,resource + . ,(when namespaced + `((if k8sns + (concat "--namespace=" k8sns) + "-o=yaml")))))) ,(if namespaced `(defun ,dlt-name (,plrl-var)