Fix search/hotkeys interference
This commit is contained in:
parent
41e86c49e9
commit
d9ecf3d502
|
@ -2,10 +2,10 @@
|
||||||
## Description
|
## Description
|
||||||
`kls` is a cli tool for managing kubernetes cluster resources. Inspired by `lf` and `ranger` file managers. Written on python curses.
|
`kls` is a cli tool for managing kubernetes cluster resources. Inspired by `lf` and `ranger` file managers. Written on python curses.
|
||||||
## Hotkeys
|
## Hotkeys
|
||||||
- `l` - logs of pod
|
- `1` - get yaml of resource
|
||||||
- `g` - get yaml of resource
|
- `2` - describe resource
|
||||||
- `d` - describe resource
|
- `3` - edit resource
|
||||||
- `e` - edit resource
|
- `4` - logs of pod
|
||||||
|
|
||||||
![kls in action](./images/kls.gif)
|
![kls in action](./images/kls.gif)
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
28
kls
28
kls
|
@ -91,12 +91,6 @@ def update_menu3():
|
||||||
menu3.row = 0
|
menu3.row = 0
|
||||||
|
|
||||||
|
|
||||||
def draw_menu(menu):
|
|
||||||
draw_header(menu) # рисуем заголовок
|
|
||||||
draw_rows(menu) # рисуем строки меню
|
|
||||||
draw_search_box(menu) # рисуем строку поиска
|
|
||||||
|
|
||||||
|
|
||||||
def draw_header(menu):
|
def draw_header(menu):
|
||||||
if menu.state in [1, 2]:
|
if menu.state in [1, 2]:
|
||||||
menu.win.addstr(1, 2, menu.name, curses.A_REVERSE | curses.A_ITALIC)
|
menu.win.addstr(1, 2, menu.name, curses.A_REVERSE | curses.A_ITALIC)
|
||||||
|
@ -127,6 +121,12 @@ def draw_search_box(menu):
|
||||||
menu.win.refresh() # обновляем окно
|
menu.win.refresh() # обновляем окно
|
||||||
|
|
||||||
|
|
||||||
|
def draw_menu(menu):
|
||||||
|
draw_header(menu) # рисуем заголовок
|
||||||
|
draw_rows(menu) # рисуем строки меню
|
||||||
|
draw_search_box(menu) # рисуем строку поиска
|
||||||
|
|
||||||
|
|
||||||
def catch_input(menu):
|
def catch_input(menu):
|
||||||
global running
|
global running
|
||||||
key_pressed = screen.getkey()
|
key_pressed = screen.getkey()
|
||||||
|
@ -153,7 +153,7 @@ def catch_input(menu):
|
||||||
navigate_vertically("down", menu)
|
navigate_vertically("down", menu)
|
||||||
elif key_pressed == "KEY_UP":
|
elif key_pressed == "KEY_UP":
|
||||||
navigate_vertically("up", menu)
|
navigate_vertically("up", menu)
|
||||||
elif key_pressed in "gdle" and menu3.state in [1, 2] and menu3.rows and not menu3.rows[menu3.row].startswith("No resources"):
|
elif key_pressed in "1234" and menu3.state in [1, 2] and menu3.rows and not menu3.rows[menu3.row].startswith("No resources"):
|
||||||
menu3_filtered_rows = list(filter(lambda x: (x.startswith(menu3.filter)), menu3.rows)) # фильтруем строки меню 3
|
menu3_filtered_rows = list(filter(lambda x: (x.startswith(menu3.filter)), menu3.rows)) # фильтруем строки меню 3
|
||||||
if not menu3_filtered_rows:
|
if not menu3_filtered_rows:
|
||||||
return
|
return
|
||||||
|
@ -162,16 +162,16 @@ def catch_input(menu):
|
||||||
namespace = menu1_filtered_rows[menu1.row]
|
namespace = menu1_filtered_rows[menu1.row]
|
||||||
api_resource = menu2_filtered_rows[menu2.row]
|
api_resource = menu2_filtered_rows[menu2.row]
|
||||||
resource = menu3.rows[menu3.row]
|
resource = menu3.rows[menu3.row]
|
||||||
if key_pressed == 'g':
|
if key_pressed == '1': # get
|
||||||
command = f"f'kubectl -n {namespace} get {api_resource} {resource} -o yaml | batcat -l yaml --paging always --style numbers'"
|
command = f"f'kubectl -n {namespace} get {api_resource} {resource} -o yaml | batcat -l yaml --paging always --style numbers'"
|
||||||
elif key_pressed == 'd':
|
elif key_pressed == '2': # describe
|
||||||
command = f"f'kubectl -n {namespace} describe {api_resource} {resource} | batcat -l yaml --paging always --style numbers'"
|
command = f"f'kubectl -n {namespace} describe {api_resource} {resource} | batcat -l yaml --paging always --style numbers'"
|
||||||
elif key_pressed == 'l' and api_resource != "pods":
|
elif key_pressed == '3': # edit
|
||||||
return
|
|
||||||
elif key_pressed == 'l' and api_resource == "pods":
|
|
||||||
command = f"f'kubectl -n {namespace} logs {resource} | batcat -l log --paging always --style numbers'"
|
|
||||||
if key_pressed == 'e':
|
|
||||||
command = f"f'kubectl edit {api_resource} -n {namespace} {resource}'"
|
command = f"f'kubectl edit {api_resource} -n {namespace} {resource}'"
|
||||||
|
elif key_pressed == '4' and api_resource != "pods":
|
||||||
|
return
|
||||||
|
elif key_pressed == '4' and api_resource == "pods": # logs
|
||||||
|
command = f"f'kubectl -n {namespace} logs {resource} | batcat -l log --paging always --style numbers'"
|
||||||
# raise ValueError(str(menu.state) + ' ' + eval(command))
|
# raise ValueError(str(menu.state) + ' ' + eval(command))
|
||||||
run_command(command, namespace, api_resource, resource)
|
run_command(command, namespace, api_resource, resource)
|
||||||
elif (key_pressed.isalpha() or key_pressed == "-") and menu.state == SELECTED_WITH_SEARCH: # объекты в кубе не могут иметь иных символов кроме a-z и -
|
elif (key_pressed.isalpha() or key_pressed == "-") and menu.state == SELECTED_WITH_SEARCH: # объекты в кубе не могут иметь иных символов кроме a-z и -
|
||||||
|
|
Loading…
Reference in New Issue