53 lines
1.8 KiB
EmacsLisp
53 lines
1.8 KiB
EmacsLisp
;;; kubernetes-namespaces.el --- Helpers for Kubernetes namespaces. -*- lexical-binding: t; -*-
|
|
;;; Commentary:
|
|
;;; Code:
|
|
|
|
(require 'kubernetes-kubectl)
|
|
(require 'kubernetes-process)
|
|
(require 'kubernetes-props)
|
|
(require 'kubernetes-state)
|
|
(require 'kubernetes-yaml)
|
|
|
|
|
|
;; Requests and state management
|
|
|
|
(kubernetes-state-define-refreshers namespaces)
|
|
|
|
;; Displaying namespaces
|
|
|
|
(defun kubernetes-namespaces--read-name (state)
|
|
"Read a namespace name from the user.
|
|
|
|
STATE is the current application state.
|
|
|
|
Update the namespace state if it not set yet."
|
|
(-let* (((&alist 'items namespaces)
|
|
(or (kubernetes-state-namespaces state)
|
|
(progn
|
|
(message "Getting namespaces...")
|
|
(let ((response (kubernetes-kubectl-await-on-async kubernetes-props state #'kubernetes-kubectl-get-namespaces)))
|
|
(kubernetes-state-update-namespaces response)
|
|
response))))
|
|
(namespaces (append namespaces nil))
|
|
(names (-map #'kubernetes-state-resource-name namespaces)))
|
|
(completing-read "Namespace: " names nil t)))
|
|
|
|
;;;###autoload
|
|
(defun kubernetes-display-namespace (namespace-name state)
|
|
"Display information for a namespace in a new window.
|
|
|
|
STATE is the current application state.
|
|
|
|
NAMESPACE-NAME is the name of the namespace to display."
|
|
(interactive (let ((state (kubernetes-state)))
|
|
(list (kubernetes-namespaces--read-name state) state)))
|
|
(if-let (namespace (kubernetes-state-lookup-namespace namespace-name state))
|
|
(select-window
|
|
(display-buffer
|
|
(kubernetes-yaml-make-buffer kubernetes-display-namespace-buffer-name namespace)))
|
|
(error "Unknown namespace: %s" namespace-name)))
|
|
|
|
|
|
(provide 'kubernetes-namespaces)
|
|
|
|
;;; kubernetes-namespaces.el ends here
|