Skip to content

Commit 5492360

Browse files
committed
configure prompt type (classic)
1 parent 717c36e commit 5492360

File tree

1 file changed

+41
-13
lines changed

1 file changed

+41
-13
lines changed

src/meshcore_cli/meshcore_cli.py

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
ANSI_BBLUE = "\033[1;34m"
4242
ANSI_YELLOW = "\033[0;33m"
4343
ANSI_RED = "\033[0;31m"
44+
ANSI_BRED = "\033[1;31m"
4445
ANSI_MAGENTA = "\033[0;35m"
4546
ANSI_BMAGENTA = "\033[1;35m"
4647
ANSI_CYAN = "\033[0;36m"
@@ -105,15 +106,15 @@ async def process_event_message(mc, ev, json_output, end="\n", above=False):
105106
name = ct["adv_name"]
106107

107108
if ct["type"] == 3 : # room
108-
disp = f"{ANSI_BCYAN}"
109+
disp = f"{ANSI_CYAN}"
109110
elif ct["type"] == 2 : # repeater
110-
disp = f"{ANSI_BMAGENTA}"
111+
disp = f"{ANSI_MAGENTA}"
111112
else:
112-
disp = f"{ANSI_BBLUE}"
113+
disp = f"{ANSI_BLUE}"
113114
disp = disp + f"{name}"
114115
if 'signature' in data:
115116
sender = mc.get_contact_by_key_prefix(data['signature'])
116-
disp = disp + f"/{ANSI_BBLUE}{sender['adv_name']}"
117+
disp = disp + f"/{ANSI_BLUE}{sender['adv_name']}"
117118
disp = disp + f" {ANSI_YELLOW}({path_str})"
118119
if data["txt_type"] == 1:
119120
disp = disp + f"{ANSI_LIGHT_GRAY}"
@@ -131,7 +132,7 @@ async def process_event_message(mc, ev, json_output, end="\n", above=False):
131132

132133
elif (data['type'] == "CHAN") :
133134
path_str = f" {ANSI_YELLOW}({path_str}){ANSI_END}"
134-
disp = f"{ANSI_BGREEN}ch{data['channel_idx']}{path_str}"
135+
disp = f"{ANSI_GREEN}ch{data['channel_idx']}{path_str}"
135136
disp = disp + f"{ANSI_END}"
136137
disp = disp + f": {data['text']}"
137138

@@ -177,9 +178,11 @@ def make_completion_dict(contacts):
177178
"name" : None, "lat" : None, "lon" : None, "coords" : None,
178179
"print_snr" : {"on":None, "off": None},
179180
"json_msgs" : {"on":None, "off": None},
180-
"color" : {"on":None, "off":None}},
181+
"color" : {"on":None, "off":None},
182+
"classic_prompt" : {"on" : None, "off":None}},
181183
"get" : {"name" : None, "bat" : None, "coords" : None, "radio" : None,
182-
"tx" : None, "print_snr" : None, "json_msgs":None, "color":None},
184+
"tx" : None, "print_snr" : None, "json_msgs":None, "color":None,
185+
"classic_prompt":None},
183186
"reboot" : None,
184187
"card" : None,
185188
"login" : None,
@@ -259,19 +262,35 @@ def _(event):
259262

260263
last_ack = True
261264
while True:
262-
prompt = f"{ANSI_INVERT}"
263-
if not last_ack:
264-
prompt = prompt + f"{ANSI_RED}!"
265+
color = process_event_message.color
266+
classic = interactive_loop.classic or not color
265267

266-
if contact["type"] == 3 : # room server
268+
if classic:
269+
prompt = ""
270+
else:
271+
prompt = f"{ANSI_INVERT}"
272+
if not last_ack:
273+
prompt = prompt + f"{ANSI_BRED}"
274+
if classic :
275+
prompt = prompt + "!"
276+
elif contact["type"] == 3 : # room server
267277
prompt = prompt + f"{ANSI_BCYAN}"
268278
elif contact["type"] == 2 :
269279
prompt = prompt + f"{ANSI_BMAGENTA}"
270280
else :
271281
prompt = prompt + f"{ANSI_BBLUE}"
272-
prompt = prompt + f"{ANSI_INVERT}{contact['adv_name']} {ANSI_NORMAL}{ANSI_END} "
282+
# some possible symbols 🭬🬛🬗🭬🬛🬃🬗🭬🬛🬃🬗🬏🭀🭋🭨🮋
283+
if not classic:
284+
prompt = prompt + f"{ANSI_INVERT}"
285+
prompt = prompt + f"{contact['adv_name']}"
286+
if classic :
287+
prompt = prompt + f"{ANSI_NORMAL}> "
288+
else:
289+
prompt = prompt + f" {ANSI_NORMAL}🭬"
273290

274-
if not process_event_message.color :
291+
prompt = prompt + f"{ANSI_END}"
292+
293+
if not color :
275294
prompt=escape_ansi(prompt)
276295

277296
session.app.ttimeoutlen = 0.2
@@ -348,6 +367,7 @@ def _(event):
348367
await process_cmds(mc, args)
349368

350369
elif line.startswith("to ") : # dest
370+
last_ack = True
351371
dest = line[3:]
352372
nc = mc.get_contact_by_name(dest)
353373
if nc is None:
@@ -403,6 +423,7 @@ def _(event):
403423
except asyncio.CancelledError:
404424
# Handle task cancellation from KeyboardInterrupt in asyncio.run()
405425
print("Exiting cli")
426+
interactive_loop.classic = False
406427

407428
async def next_cmd(mc, cmds, json_output=False):
408429
""" process next command """
@@ -503,6 +524,8 @@ async def next_cmd(mc, cmds, json_output=False):
503524
lon <lon> : longitude
504525
coords <lat,lon> : coordinates
505526
print_snr <on/off> : toggle snr display in messages""")
527+
case "classic_prompt":
528+
interactive_loop.classic = (cmds[2] == "on")
506529
case "color" :
507530
process_event_message.color = (cmds[2] == "on")
508531
case "print_snr" :
@@ -603,6 +626,11 @@ async def next_cmd(mc, cmds, json_output=False):
603626
radio : radio parameters
604627
tx : tx power
605628
print_snr : snr display in messages""")
629+
case "classic_prompt":
630+
if json_output :
631+
print(json.dumps({"classic_prompt" : interactive_loop.classic}))
632+
else:
633+
print(f"{'on' if interactive_loop.classic else 'off'}")
606634
case "json_msgs":
607635
if json_output :
608636
print(json.dumps({"json_msgs" : handle_message.json_output}))

0 commit comments

Comments
 (0)