forked from Shinonome/caelestia-cli
dc855e1b01
Also use a single file to store scheme data
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import subprocess
|
|
from argparse import Namespace
|
|
|
|
from caelestia.utils import paths
|
|
|
|
|
|
class Command:
|
|
args: Namespace
|
|
|
|
def __init__(self, args: Namespace) -> None:
|
|
self.args = args
|
|
|
|
def run(self) -> None:
|
|
if self.args.show:
|
|
# Print the ipc
|
|
self.print_ipc()
|
|
elif self.args.log:
|
|
# Print the log
|
|
self.print_log()
|
|
elif self.args.message:
|
|
# Send a message
|
|
self.message(*self.args.message)
|
|
else:
|
|
# Start the shell
|
|
self.shell()
|
|
|
|
def shell(self, *args: list[str]) -> str:
|
|
return subprocess.check_output(["qs", "-p", paths.c_data_dir / "shell", *args], text=True)
|
|
|
|
def print_ipc(self) -> None:
|
|
print(self.shell("ipc", "show"), end="")
|
|
|
|
def print_log(self) -> None:
|
|
log = self.shell("log")
|
|
# FIXME: remove when logging rules are added/warning is removed
|
|
for line in log.splitlines():
|
|
if "QProcess: Destroyed while process" not in line:
|
|
print(line)
|
|
|
|
def message(self, *args: list[str]) -> None:
|
|
print(self.shell("ipc", "call", *args), end="")
|