worthless-launcher/worthless/linux.py

37 lines
1.2 KiB
Python

import asyncio
from pathlib import Path
class LinuxUtils:
"""Utilities for Linux-specific tasks.
"""
def __init__(self):
pass
async def _exec_command(self, args):
"""Execute a command using pkexec (friendly gui)
"""
rsp = await asyncio.create_subprocess_shell(args)
await rsp.wait()
match rsp.returncode:
case 127:
raise OSError("Authentication failed.")
case 128:
raise RuntimeError("User cancelled the authentication.")
return rsp
async def write_text_to_file(self, text, file_path: str | Path):
"""Write text to a file using pkexec (friendly gui)
"""
if isinstance(file_path, Path):
file_path = str(file_path)
await self._exec_command('echo -e "{}" | pkexec tee {}'.format(text, file_path))
async def append_text_to_file(self, text, file_path: str | Path):
"""Append text to a file using pkexec (friendly gui)
"""
if isinstance(file_path, Path):
file_path = str(file_path)
await self._exec_command('echo -e "{}" | pkexec tee -a {}'.format(text, file_path))