From 5bb7fe96dbd9def413617f425d2123785e730744 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Mon, 27 Apr 2026 14:35:53 +0200 Subject: [PATCH] lib.util.get(): Add function Add get(), which does pretty much what FileContext.get() does, but with auto-instantiating a FileContext instance. Input processing filters can be passed, too, all *args and **kwargs are passed unchanged to the FileContext's constructor. Signed-off-by: Jan Lindemann --- src/python/jw/pkg/lib/util.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/python/jw/pkg/lib/util.py b/src/python/jw/pkg/lib/util.py index 8e2e075e..e1a71ba7 100644 --- a/src/python/jw/pkg/lib/util.py +++ b/src/python/jw/pkg/lib/util.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING, Iterable if TYPE_CHECKING: from typing import Sequence from .ExecContext import ExecContext + from .ProcFilter import ProcFilter, ProcPipeline import os, sys, json @@ -101,6 +102,20 @@ async def run_sudo(cmd: list[str], *args, interactive: bool=True, ec: ExecContex ec = Local(interactive=interactive) return await ec.sudo(cmd, *args, **kwargs) +async def get( + uri: str|Uri, + *args, + ctx: FileContext|None=None, + content_filter: ProcFilter|list[ProcFilter]|ProcPipeline|None = None, + **kwargs + ) -> Result: + uri = Uri.pimp(uri) + if ctx is None or uri.id != ctx.uri.id: + from .FileContext import FileContext + ctx = FileContext.create(uri) + from .ProcFilter import run as run_pipeline + return await run_pipeline(await ctx.get(uri.path, *args, **kwargs), content_filter) + async def copy(src_uri: str|Iterable[str], dst: str|FileContext, owner: str|None=None, group: str|None=None, mode: int|None=None, throw=True) -> Exception|str|list[str]: if not isinstance(src_uri, str): ret: list[str] = []