From b49165e7eac336d6edfde36bd1ef92fbd1797186 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sat, 23 May 2026 20:48:51 +0200 Subject: [PATCH] minor typer adjustments to use typer in error/exception throws --- .../__pycache__/shell.cpython-314.pyc | Bin 3592 -> 6639 bytes cli/src/zshell/subcommands/shell.py | 44 ++++++++++++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/cli/src/zshell/subcommands/__pycache__/shell.cpython-314.pyc b/cli/src/zshell/subcommands/__pycache__/shell.cpython-314.pyc index 7f6e76463bf6cf7365accb2eab566883d2689ae9..a33767152f267077925eaebafc8768711f2566be 100644 GIT binary patch literal 6639 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 literal 3592 zcmcH*TWl0n^xm1-cONW8icl!ErLaPG5Gx=c2+^uBEbCYcCZ+2#JKe53yR+PxjfD?W z!35%m64SS&*x1l~S*mk{buj<$V9_a<&FnAm*LC`H!qg#`LJ5i+RHe-pY4BOy= zi3s0f4A2-FwD(b5aHh_r0}a~IfD{zPI~)oE85Chpue6%gE1VEK@$)b1F%CPFu37 zXJnJ8@>z34({&l{QH@+KnNOKA--#B^5GEc+ES}A^fX2`-QqzUlx!8E`8HOIg)H`gDT+%Yx?T-)^?zAD1Napi~m9(@(f;cY_fRBS0Fb|DUxbA+;zBES$ne{jf?XvTC73zy4 zRB(mbJ?EjQNVeMw!oafCc<9f)C+yH}M@QEW^6Jk-iL<<@0jMt?TfTPmqJmHWZMv6A z;awV7%LbosDUTv9sV061z5vhbJ|21fkYY`0vS1a7mN1G|p=hN)`jElQA<_!+lXZY% z5g%c_hy)m7I#Lfw=F=Jt5)F>#RU@TQ$;#w3>M?aqD?~&d%M>T5muO~Dw@l{v?#-La zf$f7$9@?F-%L8l_ChpL#l$beb=dH%omv+7T>P37jyy1gQ?{E54n)XhOe%5?Nx*mS^ zqW4B9Tne>)8)};puZKE+Xb9i(H@p{oCwQs%d;hwH0BUOeEr>kLmC98oV?Y20oB}Zf zTlW{KHU3zp7*H`&P^n~&7;m`i0SUo>^CaRnBi(GtP&<6)MnGxsV&mN4cD=ClB+UJdDR%=K1PlwLD&yF2DR`fc5F&O2c3Z z+TcX&6zn`m&kxi*x&~@`cE7M6+nqfP6173nMbVOH+A@jEV}mfI-9Z7hum`qClp$^w zreb$@xyN&Mju_qC2k76$$dzoV@Ax(Ny>fi6<;1nuQYA^_Arld)aN0a8^r+NZe&R)N zU!=KQ!CCE~9_vg&Bb7ql&*oH277El?c?XtXf9%ykIvL`XhvzQ~Vd_6j(#4#Xx5~1I z7z=B6<&6D z1kZ&HZ*4fgaY4ZNu|*LH>$F?{_G7VI9K`DTbHO*ps6|W7GLH&N+7DKIhmz*C|Gk o9g18-iQD&K9C!cMjRS|jiG3Bj+WXys_+1{k{E9npStW@70&SWktpET3 diff --git a/cli/src/zshell/subcommands/shell.py b/cli/src/zshell/subcommands/shell.py index ae73d0b..d66ea57 100644 --- a/cli/src/zshell/subcommands/shell.py +++ b/cli/src/zshell/subcommands/shell.py @@ -1,5 +1,8 @@ import subprocess +import sys import time + +import click import typer args = ["qs", "-c", "zshell"] @@ -9,40 +12,65 @@ app = typer.Typer() @app.command() def kill(): - subprocess.run(args + ["kill"], check=False) + result = subprocess.run(args + ["kill"], capture_output=True) + if result.returncode != 0: + raise click.ClickException("No running instance to kill.") + sys.stderr.write(result.stderr.decode()) @app.command() def start(no_daemon: bool = False): - subprocess.run(args + ["-n"] + ([] if no_daemon else ["-d"]), check=True) + check = subprocess.run(args + ["ipc"] + ["show"], capture_output=True) + if check.returncode == 0: + raise click.ClickException("An instance of this configuration is already running.") + result = subprocess.run(args + ["-n"] + ([] if no_daemon else ["-d"]), capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stderr.write(result.stderr.decode()) @app.command() def restart(no_daemon: bool = False): - subprocess.run(args + ["kill"], check=False) + subprocess.run(args + ["kill"]) for _ in range(50): result = subprocess.run(args + ["kill"], capture_output=True) if result.returncode == 255: break time.sleep(0.05) - subprocess.run(args + ["-n"] + ([] if no_daemon else ["-d"]), check=True) + result = subprocess.run(args + ["-n"] + ([] if no_daemon else ["-d"]), capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stderr.write(result.stderr.decode()) @app.command() def show(): - subprocess.run(args + ["ipc"] + ["show"], check=True) + result = subprocess.run(args + ["ipc"] + ["show"], capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stderr.write(result.stderr.decode()) @app.command() def log(): - subprocess.run(args + ["log"], check=True) + result = subprocess.run(args + ["log"], capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stdout.write(result.stdout.decode()) + sys.stderr.write(result.stderr.decode()) @app.command() def lock(): - subprocess.run(args + ["ipc"] + ["call"] + ["lock"] + ["lock"], check=True) + result = subprocess.run(args + ["ipc"] + ["call"] + ["lock"] + ["lock"], capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stderr.write(result.stderr.decode()) @app.command() def call(target: str, method: str, method_args: list[str] = typer.Argument(None)): - subprocess.run(args + ["ipc"] + ["call"] + [target] + [method] + (method_args or []), check=True) + result = subprocess.run(args + ["ipc"] + ["call"] + [target] + [method] + (method_args or []), capture_output=True) + if result.returncode != 0: + raise click.ClickException(result.stderr.decode().strip()) + sys.stderr.write(result.stderr.decode())