Source code for reemote.operations.apk.packages

# Copyright (c) 2025 Kim Jarvis TPF Software Services S.A. kim.jarvis@tpfsystems.com 
# This software is licensed under the MIT License. See the LICENSE file for details.
#
from typing import List
from reemote.operation_packages import Operation_packages
from reemote.commands.apk.install import Install
from reemote.commands.apk.remove import Remove
from reemote.facts.apk.get_packages import Get_packages


[docs] class Packages(Operation_packages): """ A class to manage package operations on a remote system using `apk`. Description ----------- This class extends the `Operation_packages` base class to provide functionality for managing packages on a remote system via the `apk` package manager. It supports installing, removing, and retrieving package information while allowing fine-grained control over execution privileges (`sudo`, `su`) and operational guards. Parameters ---------- packages : List[str] A list of package names to be managed. present : bool Indicates whether the packages should be present (`True`) or absent (`False`) on the system. guard : bool, optional Enables or disables guard conditions for operations. Defaults to `True`. sudo : bool, optional Executes commands with `sudo` privileges if `True`. Defaults to `False`. su : bool, optional Executes commands with `su` privileges if `True`. Defaults to `False`. Methods ------- get_packages() Retrieves the list of installed packages on the remote system. Returns ------- Get_packages An instance of `Get_packages` containing the package information. install_packages(packages=None, guard=None, present=None, sudo=None, su=None) Installs the specified packages on the remote system. Parameters ---------- packages : List[str], optional Overrides the default package list for this operation. Defaults to `None`. guard : bool, optional Overrides the default guard condition. Defaults to `None`. present : bool, optional Overrides the default presence condition. Defaults to `None`. sudo : bool, optional Overrides the default `sudo` setting. Defaults to `None`. su : bool, optional Overrides the default `su` setting. Defaults to `None`. Returns ------- Install An instance of `Install` configured with the specified parameters. remove_packages(packages=None, guard=None, present=None, sudo=None, su=None) Removes the specified packages from the remote system. Parameters ---------- packages : List[str], optional Overrides the default package list for this operation. Defaults to `None`. guard : bool, optional Overrides the default guard condition. Defaults to `None`. present : bool, optional Overrides the default presence condition. Defaults to `None`. sudo : bool, optional Overrides the default `sudo` setting. Defaults to `None`. su : bool, optional Overrides the default `su` setting. Defaults to `None`. Returns ------- Remove An instance of `Remove` configured with the specified parameters. """ def __init__(self, packages: List[str], present: bool, guard: bool = True, sudo: bool = False, su: bool = False): print("trace 01") super().__init__(packages, present, guard, sudo, su) print("trace 02")
[docs] def get_packages(self): print("trace 00") return Get_packages()
[docs] def install_packages(self, packages=None, guard=None, present=None, sudo=None, su=None): return Install(self.packages, self.guard and self.present, self.sudo, self.su)
[docs] def remove_packages(self, packages=None, guard=None, present=None, sudo=None, su=None): print("trace 20") return Remove(self.packages, self.guard and not self.present, self.sudo, self.su)