Build install/remove commands per distro family. Provide either package list/string or an override command for a family.
(pkgs_deb=None, pkgs_arch=None, pkgs_alpine=None, pkgs_fedora=None, pkgs_suse=None, pkgs_void=None,
deb_override=None, arch_override=None, alpine_override=None, fedora_override=None, suse_override=None, void_override=None)
| 265 | ] |
| 266 | |
| 267 | def _mk_cmds(pkgs_deb=None, pkgs_arch=None, pkgs_alpine=None, pkgs_fedora=None, pkgs_suse=None, pkgs_void=None, |
| 268 | deb_override=None, arch_override=None, alpine_override=None, fedora_override=None, suse_override=None, void_override=None): |
| 269 | """Build install/remove commands per distro family. |
| 270 | Provide either package list/string or an override command for a family. |
| 271 | """ |
| 272 | def _pkgs(x): |
| 273 | if x is None: |
| 274 | return None |
| 275 | if isinstance(x, (list, tuple)): |
| 276 | return " ".join(x) |
| 277 | return str(x).strip() |
| 278 | |
| 279 | cmd = {} |
| 280 | |
| 281 | # Debian/Ubuntu |
| 282 | if deb_override: |
| 283 | cmd["debian"] = {"install": deb_override, "remove": "true"} |
| 284 | else: |
| 285 | pk = _pkgs(pkgs_deb) |
| 286 | if pk: |
| 287 | cmd["debian"] = { |
| 288 | "install": f"export DEBIAN_FRONTEND=noninteractive; apt-get update -y && apt-get install -y {pk}", |
| 289 | "remove": f"apt-get remove -y {pk} || true && apt-get autoremove -y || true", |
| 290 | } |
| 291 | |
| 292 | # Arch |
| 293 | if arch_override: |
| 294 | cmd["arch"] = {"install": arch_override, "remove": "true"} |
| 295 | else: |
| 296 | pk = _pkgs(pkgs_arch) |
| 297 | if pk: |
| 298 | cmd["arch"] = { |
| 299 | "install": f"pacman -Syu --noconfirm || true; pacman -S --noconfirm {pk}", |
| 300 | "remove": f"pacman -Rns --noconfirm {pk} || true", |
| 301 | } |
| 302 | |
| 303 | # Alpine |
| 304 | if alpine_override: |
| 305 | cmd["alpine"] = {"install": alpine_override, "remove": "true"} |
| 306 | else: |
| 307 | pk = _pkgs(pkgs_alpine) |
| 308 | if pk: |
| 309 | cmd["alpine"] = { |
| 310 | "install": f"apk update && apk add {pk}", |
| 311 | "remove": f"apk del {pk} || true", |
| 312 | } |
| 313 | |
| 314 | # Fedora |
| 315 | if fedora_override: |
| 316 | cmd["fedora"] = {"install": fedora_override, "remove": "true"} |
| 317 | else: |
| 318 | pk = _pkgs(pkgs_fedora) |
| 319 | if pk: |
| 320 | cmd["fedora"] = { |
| 321 | "install": f"dnf -y upgrade || true; dnf -y install {pk}", |
| 322 | "remove": f"dnf -y remove {pk} || true", |
| 323 | } |
| 324 |