#!/bin/bash # pm_base.sh - Base package manager interface for USM installer # Common dependencies required by USM and its components # These are package names that should be common across package managers declare -A COMMON_DEPS=( ["vala"]="vala" ["meson"]="meson" ["ninja"]="ninja-build" ["git"]="git" ["pkgconfig"]="pkg-config" ["gcc"]="gcc" ["glib"]="glib2" ) # Base function to check if a package is installed # Must be overridden by package manager implementation pm_is_installed() { log_error "pm_is_installed not implemented" return 1 } # Base function to install packages # Must be overridden by package manager implementation pm_install() { log_error "pm_install not implemented" return 1 } # Base function to update package cache # Must be overridden by package manager implementation pm_update() { log_error "pm_update not implemented" return 1 } # Base function to get package names for dependencies # Must be overridden by package manager implementation pm_get_package_name() { log_error "pm_get_package_name not implemented" echo "" } # Install all missing dependencies install_missing_deps() { local missing=$(get_missing_deps) if [[ -z "$missing" ]]; then log_info "All dependencies are already installed" return 0 fi log_step "Installing missing dependencies: ${missing}" if ! pm_update; then log_warn "Failed to update package cache, continuing anyway..." fi if ! pm_install $missing; then log_error "Failed to install dependencies" return 1 fi log_info "Dependencies installed successfully" return 0 } # Count missing dependencies count_missing_deps() { local missing=$(get_missing_deps) if [[ -z "$missing" ]]; then echo 0 else echo $(echo "$missing" | wc -w) fi }