| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/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
- }
|