Skip to content

Commit a147907

Browse files
committed
fix: RET in kele-list-all output works on all resources
Closes #269.
1 parent 61278fa commit a147907

File tree

3 files changed

+52
-31
lines changed

3 files changed

+52
-31
lines changed

docs/references/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ versioning][semver].
3131
- `kele-proxy-stop`: Interactive completion now filters out contexts without active proxy processes
3232
- `kele-port-forward` is now inapt if the user does not have permission to create port-forwards
3333
- `kele-resource-follow-logs` is now inapt if the user does not have permission to get pod logs
34+
- Fixed a regression where, in `kele-list-mode` buffers created via the `kele-list-all` function,
35+
users were unable to `get` a row resource by hitting `RET` on it.
3436

3537
### Changed
3638

kele.el

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1873,13 +1873,14 @@ support that verb will be offered as completion candidates."
18731873
(defvar kele--list-snapshot-time nil
18741874
"The last updated time for a `kele-list-mode' buffer.")
18751875

1876-
(defvar kele--list-gvk nil
1877-
"The group-version-kind corresponding to the current `kele-list-mode' buffer.")
1878-
18791876
(defun kele--list-get-at-point ()
18801877
"`kele-get's the current object at point."
18811878
(let-alist (vtable-current-object)
1882-
(kele-get kele--list-context .object.metadata.namespace kele--list-gvk .object.metadata.name)))
1879+
(kele-get
1880+
kele--list-context
1881+
.object.metadata.namespace
1882+
(alist-get 'gvk (oref (magit-section-at) value))
1883+
.object.metadata.name)))
18831884

18841885
(defun kele-list-table-dwim ()
18851886
"Run the default action on `kele-list' table entries.
@@ -1913,12 +1914,13 @@ Otherwise, simply `kele-get' the resource at point."
19131914
"Delete the resource at the current line."
19141915
(interactive nil kele-list-mode)
19151916
(let-alist (vtable-current-object)
1916-
(kele-delete
1917-
kele--list-context
1918-
.metadata.namespace
1919-
(kele--gv-string kele--list-gvk)
1920-
(oref kele--list-gvk kind)
1921-
.metadata.name))
1917+
(let ((gvk (alist-get 'gvk (oref (magit-section-at) value))))
1918+
(kele-delete
1919+
kele--list-context
1920+
.metadata.namespace
1921+
(kele--gv-string gvk)
1922+
(oref gvk kind)
1923+
.metadata.name)))
19221924
(vtable-revert-command))
19231925

19241926
(defvar kele-list-table-map
@@ -2111,13 +2113,11 @@ See bug#58712. Remove when Emacs 30 is released."
21112113
((group version) (kele--groupversion-split gv))
21122114
(gvk (kele--gvk-create :group group :version version :kind kind)))
21132115
(condition-case err
2114-
(magit-insert-section (kele-list-table)
2116+
(magit-insert-section (kele-list-table `((gvk . ,gvk)))
21152117
(magit-insert-heading (format "%s: %s"
21162118
(propertize "Resources" 'font-lock-face 'magit-section-heading)
21172119
(propertize kind 'font-lock-face 'kele-resource-kind-face)))
21182120
(magit-insert-section-body
2119-
(setq-local kele--list-gvk gvk)
2120-
(put 'kele--list-gvk 'permanent-local t)
21212121
(vtable-insert (kele--vtable-tabulate gvk context namespace))
21222122
(vtable-end-of-table)
21232123
(insert "\n")))
@@ -2194,19 +2194,15 @@ KIND is not namespaced, returns an error."
21942194
group-version
21952195
kind)
21962196
(kele--get-namespace-arg :permit-nil t)))))
2197-
(-let* (((group version) (kele--groupversion-split group-version))
2198-
(gvk (kele--gvk-create :group group :version version :kind kind))
2199-
(buf (get-buffer-create (format "*kele: %s/%s [%s(%s)]*"
2200-
group-version
2201-
kind
2202-
context
2203-
(or namespace "<all namespaces>")))))
2197+
(let ((buf (get-buffer-create (format "*kele: %s/%s [%s(%s)]*"
2198+
group-version
2199+
kind
2200+
context
2201+
(or namespace "<all namespaces>")))))
22042202
(with-current-buffer buf
22052203
(setq-local kele--list-context context)
2206-
(setq-local kele--list-gvk gvk)
22072204
(setq-local kele--list-snapshot-time (current-time))
22082205
(put 'kele--list-context 'permanent-local t)
2209-
(put 'kele--list-gvk 'permanent-local t)
22102206
(put 'kele--list-snapshot-time 'permanent-local t)
22112207

22122208
(let ((inhibit-read-only t))

tests/unit/test-kele.el

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -792,25 +792,48 @@ metadata:
792792
(before-each
793793
(setq kele-confirm-deletions nil)
794794
(setq kele--list-context "fake-context")
795-
(setq kele--list-gvk (kele--gvk-create
796-
:group "fake-group"
797-
:version "v999"
798-
:kind "fake-kind"))
799795
(spy-on 'vtable-revert-command)
800-
(spy-on 'kele-delete))
796+
(spy-on 'kele-delete)
797+
(spy-on 'kele-get))
798+
799+
(describe "`kele--list-get-at-point'"
800+
(before-each
801+
(let ((fake-gvk (kele--gvk-create :group "fake-group" :version "v999" :kind "fake-kind"))
802+
(fake-section (magit-section :type 'kele-list-table)))
803+
(oset fake-section value `((gvk . ,fake-gvk)))
804+
(spy-on 'vtable-current-object :and-return-value
805+
'((object . ((metadata . ((namespace . "fake-namespace")
806+
(name . "fake-name")))))))
807+
(spy-on 'magit-section-at :and-return-value fake-section)))
808+
809+
(it "retrieves GVK from magit section value"
810+
(kele--list-get-at-point)
811+
(let ((fake-gvk (kele--gvk-create :group "fake-group" :version "v999" :kind "fake-kind")))
812+
(expect 'kele-get :to-have-been-called-with
813+
"fake-context"
814+
"fake-namespace"
815+
fake-gvk
816+
"fake-name"))))
817+
801818
(describe "`kele-list-kill'"
802819
(before-each
803-
(spy-on 'vtable-current-object :and-return-value
804-
'((metadata . ((namespace . "fake-namespace")
805-
(name . "fake-name"))))))
806-
(it "kills the current object"
820+
(let ((fake-gvk (kele--gvk-create :group "fake-group" :version "v999" :kind "fake-kind"))
821+
(fake-section (magit-section :type 'kele-list-table)))
822+
(oset fake-section value `((gvk . ,fake-gvk)))
823+
(spy-on 'vtable-current-object :and-return-value
824+
'((metadata . ((namespace . "fake-namespace")
825+
(name . "fake-name")))))
826+
(spy-on 'magit-section-at :and-return-value fake-section)))
827+
828+
(it "kills the current object using GVK from magit section"
807829
(kele-list-kill)
808830
(expect 'kele-delete :to-have-been-called-with
809831
"fake-context"
810832
"fake-namespace"
811833
"fake-group/v999"
812834
"fake-kind"
813835
"fake-name"))
836+
814837
(it "refreshes the table"
815838
(kele-list-kill)
816839
(expect 'vtable-revert-command :to-have-been-called))))

0 commit comments

Comments
 (0)