pm_base.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/bin/bash
  2. # pm_base.sh - Base package manager interface for USM installer
  3. # Common dependencies required by USM and its components
  4. # These are package names that should be common across package managers
  5. declare -A COMMON_DEPS=(
  6. ["vala"]="vala"
  7. ["meson"]="meson"
  8. ["ninja"]="ninja-build"
  9. ["git"]="git"
  10. ["pkgconfig"]="pkg-config"
  11. ["gcc"]="gcc"
  12. ["glib"]="glib2"
  13. )
  14. # Base function to check if a package is installed
  15. # Must be overridden by package manager implementation
  16. pm_is_installed() {
  17. log_error "pm_is_installed not implemented"
  18. return 1
  19. }
  20. # Base function to install packages
  21. # Must be overridden by package manager implementation
  22. pm_install() {
  23. log_error "pm_install not implemented"
  24. return 1
  25. }
  26. # Base function to update package cache
  27. # Must be overridden by package manager implementation
  28. pm_update() {
  29. log_error "pm_update not implemented"
  30. return 1
  31. }
  32. # Base function to get package names for dependencies
  33. # Must be overridden by package manager implementation
  34. pm_get_package_name() {
  35. log_error "pm_get_package_name not implemented"
  36. echo ""
  37. }
  38. # Install all missing dependencies
  39. install_missing_deps() {
  40. local missing=$(get_missing_deps)
  41. if [[ -z "$missing" ]]; then
  42. log_info "All dependencies are already installed"
  43. return 0
  44. fi
  45. log_step "Installing missing dependencies: ${missing}"
  46. if ! pm_update; then
  47. log_warn "Failed to update package cache, continuing anyway..."
  48. fi
  49. if ! pm_install $missing; then
  50. log_error "Failed to install dependencies"
  51. return 1
  52. fi
  53. log_info "Dependencies installed successfully"
  54. return 0
  55. }
  56. # Count missing dependencies
  57. count_missing_deps() {
  58. local missing=$(get_missing_deps)
  59. if [[ -z "$missing" ]]; then
  60. echo 0
  61. else
  62. echo $(echo "$missing" | wc -w)
  63. fi
  64. }