mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-24 17:23:36 +02:00
lib.ExecContext.username: Add property
Add the property .username, backed by the protected _username() callback. It should return the user run()'s cmd parameter is executed as. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
5ea6ab0383
commit
9f756222fe
3 changed files with 15 additions and 4 deletions
|
|
@ -240,9 +240,13 @@ class ExecContext(Base):
|
|||
super().__init__(uri=uri, interactive=interactive, verbose_default=verbose_default)
|
||||
|
||||
@abc.abstractmethod
|
||||
async def _run(self, *args, **kwargs) -> Result:
|
||||
def _username(self) -> str:
|
||||
pass
|
||||
|
||||
@property
|
||||
def username(self) -> str:
|
||||
return self._username()
|
||||
|
||||
async def run(
|
||||
self,
|
||||
cmd: list[str],
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
import os, sys, subprocess, asyncio, pwd, grp, stat
|
||||
|
||||
from functools import cache
|
||||
|
||||
from ..ExecContext import ExecContext as Base
|
||||
from ..base import Result, StatResult
|
||||
|
||||
|
|
@ -13,6 +15,10 @@ class Local(Base):
|
|||
def __init__(self, uri='local', *args, **kwargs) -> None:
|
||||
super().__init__(uri, *args, **kwargs)
|
||||
|
||||
@cache
|
||||
def _username(self) -> str:
|
||||
return pwd.getpwuid(os.getuid()).pw_name,
|
||||
|
||||
async def _run(
|
||||
self,
|
||||
cmd: list[str],
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
from typing import Any
|
||||
|
||||
import os, abc, sys
|
||||
import os, abc, sys, pwd
|
||||
from enum import Flag, auto
|
||||
|
||||
from ..util import pretty_cmd
|
||||
|
|
@ -128,8 +128,9 @@ class SSHClient(ExecContext):
|
|||
def set_username(self, username: str) -> None:
|
||||
self.__username = username
|
||||
|
||||
@property
|
||||
def username(self) -> str|None:
|
||||
def _username(self) -> str:
|
||||
if self.__username is None:
|
||||
return pwd.getpwuid(os.getuid()).pw_name
|
||||
return self.__username
|
||||
|
||||
def ssh_client(*args, type: str|list[str]|None=None, **kwargs) -> SSHClient: # export
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue