worthless-launcher/worthless/linux.py

37 lines
1.1 KiB
Python
Raw Normal View History

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_exec(*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('pkexec', 'echo', 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('pkexec', 'echo', text, '>>', file_path)