jw-pkg/src/python/jw/pkg/lib/ec/Local.py

29 lines
978 B
Python
Raw Normal View History

# -*- coding: utf-8 -*-
import os
from ..util import run_cmd
from ..ExecContext import ExecContext as Base
from ..ExecContext import Result
class Local(Base):
async def _run(self, *args, **kwargs) -> Result:
return await run_cmd(*args, **kwargs)
async def _sudo(self, cmd: list[str], mod_env: dict[str, str] = {}, opts: list[str]=[], verbose=True) -> Result:
env: dict[str, str]|None = None
cmd_input: str|None = None
if mod_env:
env = os.environ.copy()
env.update(mod_env)
cmdline = []
if os.getuid() != 0:
cmdline.append('/usr/bin/sudo')
if env is not None:
cmdline.append('--preserve-env=' + ','.join(mod_env.keys()))
cmdline.extend(opts)
cmdline.extend(cmd)
if self.interactive:
cmd_input = "mode:interactive"
return await self._run(cmdline, throw=True, verbose=verbose, env=env, cmd_input=cmd_input)