| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/bin/bash
- # pm_apt.sh - APT package manager implementation for Debian/Ubuntu systems
- # Package name mappings for apt
- declare -A APT_PACKAGE_NAMES=(
- ["vala"]="valac"
- ["meson"]="meson"
- ["ninja"]="ninja-build"
- ["git"]="git"
- ["pkgconfig"]="pkg-config"
- ["gcc"]="gcc"
- ["glib"]="libglib2.0-dev"
- ["libsodium"]="libsodium-dev"
- ["gtk"]="libgtk-3-dev"
- )
- # Check if a package is installed via apt/dpkg
- pm_is_installed() {
- local pkg="$1"
- dpkg -l "$pkg" 2>/dev/null | grep -q "^ii"
- }
- # Get the apt package name for a generic dependency
- pm_get_package_name() {
- local dep="$1"
- if [[ -n "${APT_PACKAGE_NAMES[$dep]}" ]]; then
- echo "${APT_PACKAGE_NAMES[$dep]}"
- else
- echo "$dep"
- fi
- }
- # Update apt cache
- pm_update() {
- local sudo=$(get_sudo)
- if [[ -n "$sudo" ]]; then
- $sudo apt-get update -qq
- else
- apt-get update -qq
- fi
- }
- # Install packages via apt
- pm_install() {
- local -a pkgs=("$@")
- local sudo=$(get_sudo)
- local apt_opts="-y -qq"
-
- if [[ "$ASSUME_YES" == "true" ]]; then
- apt_opts="-y -qq --allow-downgrades --allow-remove-essential --allow-change-held-packages"
- fi
-
- log_step "Installing packages via apt: ${pkgs[*]}"
-
- if [[ -n "$sudo" ]]; then
- DEBIAN_FRONTEND=noninteractive $sudo apt-get install $apt_opts "${pkgs[@]}"
- else
- DEBIAN_FRONTEND=noninteractive apt-get install $apt_opts "${pkgs[@]}"
- fi
- }
- # Get list of missing dependencies (apt-specific override)
- get_missing_deps() {
- local -a missing=()
- local deps=("vala" "meson" "ninja" "git" "pkgconfig" "gcc" "glib" "libsodium")
-
- for dep in "${deps[@]}"; do
- local pkg_name=$(pm_get_package_name "$dep")
- if ! pm_is_installed "$pkg_name"; then
- missing+=("$pkg_name")
- fi
- done
-
- echo "${missing[@]}"
- }
|