Skip to content

Commit

Permalink
feat: simplified the kubernetes version logic (abrochard#116)
Browse files Browse the repository at this point in the history
* feat: simplified the kubernetes version logic

Instead of relaying on string matching we can use `assoc-string` to
get the values we need. This means that we lose patch version, but I'm
pretty confident that we don't need it.

* feat: removed patch version from test
  • Loading branch information
Kyrremann committed Oct 13, 2023
1 parent 44ed9ca commit b882de3
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 14 deletions.
21 changes: 8 additions & 13 deletions kubel.el
Original file line number Diff line number Diff line change
Expand Up @@ -336,32 +336,27 @@ CMD is the command string to run."
(setq kubel--label-values-cached nil))

(defun kubel-kubernetes-version ()
"Return a list with (major-version minor-version patch)."
"Return a list with (major-version minor-version)."
(let* ((version-json (json-read-from-string
(if (null kubel--kubernetes-version-cached)
(setq kubel--kubernetes-version-cached
(kubel--exec-to-string (concat kubel-kubectl " version --output=json")))
kubel--kubernetes-version-cached)))
(version-string (assoc-default 'gitVersion
(assoc-default 'serverVersion version-json))))
(string-match "v\\([0-9]*\\)\.\\([0-9]*\\)\.\\([0-9]*\\)[^0-9].*" version-string)
(version-string (assoc-default 'serverVersion version-json)))
(list
(string-to-number (match-string 1 version-string))
(string-to-number (match-string 2 version-string))
(string-to-number (match-string 3 version-string)))))
(string-to-number (cdr (assoc-string "major" version-string)))
(string-to-number (cdr (assoc-string "minor" version-string))))))

(defun kubel-kubernetes-compatible-p (version)
"Return TRUE if kubernetes version is greater than or equal to VERSION.
VERSION should be a list of (major-version minor-version patch)."
VERSION should be a list of (major-version minor-version)."
(let*
((kubernetes-version (kubel-kubernetes-version))
(kubernetes-major-version (nth 0 kubernetes-version))
(kubernetes-minor-version (nth 1 kubernetes-version))
(kubernetes-patch-version (nth 2 kubernetes-version)))
(kubernetes-minor-version (nth 1 kubernetes-version)))
(and
(<= (nth 0 version) kubernetes-major-version)
(or (<= (nth 1 version) kubernetes-minor-version) (< (nth 0 version) kubernetes-major-version))
(or (<= (nth 2 version) kubernetes-patch-version) (< (nth 1 version) kubernetes-minor-version)))))
(or (<= (nth 1 version) kubernetes-minor-version) (< (nth 0 version) kubernetes-major-version)))))

(defun kubel--populate-list ()
"Return a list with a tabulated list format and \"tabulated-list-entries\"."
Expand Down Expand Up @@ -898,7 +893,7 @@ the context caches, including the cached resource list."
(interactive "P")
(when refresh (kubel--invalidate-context-caches))
(let* ((current-buffer-name (kubel--buffer-name))
(resource-list (if (kubel-kubernetes-compatible-p '(1 13 3))
(resource-list (if (kubel-kubernetes-compatible-p '(1 13))
(if (null kubel--kubernetes-resources-list-cached)
(setq kubel--kubernetes-resources-list-cached
(kubel--fetch-api-resource-list))
Expand Down
2 changes: 1 addition & 1 deletion test/kubel-test.el
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
}
}
")))
(should (equal '(1 27 4) (kubel-kubernetes-version)))))
(should (equal '(1 27) (kubel-kubernetes-version)))))

;; (ert "kubel--test-.*")

Expand Down

0 comments on commit b882de3

Please sign in to comment.