From 452d90b352ff74385463a3ba03025be64231b5b0 Mon Sep 17 00:00:00 2001 From: Florent de Lamotte Date: Fri, 31 Oct 2025 11:24:15 +0100 Subject: [PATCH] handle login cancelation --- src/meshcore_cli/meshcore_cli.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/meshcore_cli/meshcore_cli.py b/src/meshcore_cli/meshcore_cli.py index 186548e..0fd61f7 100644 --- a/src/meshcore_cli/meshcore_cli.py +++ b/src/meshcore_cli/meshcore_cli.py @@ -976,8 +976,12 @@ async def process_contact_chat_line(mc, contact, line): password=f.readline().strip() if password == "": - sess = PromptSession("Password: ", is_password=True) - password = await sess.prompt_async() + try: + sess = PromptSession("Password: ", is_password=True) + password = await sess.prompt_async() + except EOFError: + logger.info("Canceled") + return True if password_file != "": with open(password_file, "w", encoding="utf-8") as f : @@ -1990,7 +1994,12 @@ async def next_cmd(mc, cmds, json_output=False): else: print(f"Unknown contact {cmds[1]}") else: - res = await mc.commands.send_login(contact, cmds[2]) + password = cmds[2] + if password == "$": + sess = PromptSession("Password: ", is_password=True) + password = await sess.prompt_async() + + res = await mc.commands.send_login(contact, password) logger.debug(res) if res.type == EventType.ERROR: if json_output : @@ -2572,6 +2581,9 @@ async def next_cmd(mc, cmds, json_output=False): except IndexError: logger.error("Error in parameters, returning") return None + except EOFError: + logger.error("Cancelled") + return None async def process_cmds (mc, args, json_output=False) : cmds = args