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
2022-02-27 06:42:10 +00:00
async def _exec_command(self, args):
"""Execute a command using pkexec (friendly gui)
"""
2022-02-27 06:42:10 +00:00
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)
2022-02-27 06:42:10 +00:00
await self._exec_command('pkexec echo {} > {}'.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)
2022-02-27 06:42:10 +00:00
await self._exec_command('pkexec echo {} >> {}'.format(text, file_path))