diff options
Diffstat (limited to 'src/hydrilla/builder/local_apt.py')
-rw-r--r-- | src/hydrilla/builder/local_apt.py | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/src/hydrilla/builder/local_apt.py b/src/hydrilla/builder/local_apt.py index e8a45e8..925fd61 100644 --- a/src/hydrilla/builder/local_apt.py +++ b/src/hydrilla/builder/local_apt.py @@ -33,12 +33,13 @@ import shutil import re import subprocess CP = subprocess.CompletedProcess +import typing as t + from pathlib import Path, PurePosixPath from tempfile import TemporaryDirectory, NamedTemporaryFile from hashlib import sha256 from urllib.parse import unquote from contextlib import contextmanager -from typing import Optional, Iterable, Iterator from ..translations import smart_gettext as _ from .piggybacking import Piggybacked @@ -91,10 +92,15 @@ class AptError(SubprocessError): commands. """ -def run(command, **kwargs): +def run(command: t.Sequence[str], **kwargs) -> CP: """A wrapped around subprocess.run that sets some default options.""" - return subprocess.run(command, **kwargs, env={'LANG': 'en_US'}, - capture_output=True, text=True) + return subprocess.run( + command, + **kwargs, + env = {'LANG': 'en_US'}, + capture_output = True, + text = True + ) class Apt: """ @@ -135,8 +141,11 @@ def cache_dir() -> Path: class SourcesList: """Representation of apt's sources.list contents.""" - def __init__(self, list: list[str]=[], - codename: Optional[str]=None) -> None: + def __init__( + self, + list: list[str] = [], + codename: t.Optional[str] = None + ) -> None: """Initialize this SourcesList.""" self.codename = None self.list = [*list] @@ -273,7 +282,7 @@ def setup_local_apt(directory: Path, list: SourcesList, keys: list[str]) -> Apt: return apt @contextmanager -def local_apt(list: SourcesList, keys: list[str]) -> Iterator[Apt]: +def local_apt(list: SourcesList, keys: list[str]) -> t.Iterator[Apt]: """ Create a temporary directory with proper local APT configuration in it. Yield an Apt object that can be used to issue apt-get commands. @@ -285,9 +294,13 @@ def local_apt(list: SourcesList, keys: list[str]) -> Iterator[Apt]: td = Path(td_str) yield setup_local_apt(td, list, keys) -def download_apt_packages(list: SourcesList, keys: list[str], - packages: list[str], destination_dir: Path, - with_deps: bool) -> list[str]: +def download_apt_packages( + list: SourcesList, + keys: list[str], + packages: list[str], + destination_dir: Path, + with_deps: bool +) -> list[str]: """ Set up a local APT, update it using the specified sources.list configuration and use it to download the specified packages. @@ -362,8 +375,10 @@ def download_apt_packages(list: SourcesList, keys: list[str], return downloaded @contextmanager -def piggybacked_system(piggyback_def: dict, foreign_packages: Optional[Path]) \ - -> Iterator[Piggybacked]: +def piggybacked_system( + piggyback_def: dict, + foreign_packages: t.Optional[Path] +) -> t.Iterator[Piggybacked]: """ Resolve resources from APT. Optionally, use package files (.deb's, etc.) from a specified directory instead of resolving and downloading them. @@ -386,8 +401,10 @@ def piggybacked_system(piggyback_def: dict, foreign_packages: Optional[Path]) \ archives.mkdir(exist_ok=True) if [*archives.glob('*.deb')] == []: - sources_list = SourcesList(piggyback_def.get('sources_list', []), - piggyback_def.get('distribution')) + sources_list = SourcesList( + list = piggyback_def.get('sources_list', []), + codename = piggyback_def.get('distribution') + ) packages = piggyback_def['packages'] with_deps = piggyback_def['dependencies'] pgp_keys = [ |