| #!/bin/bash |
| |
| set -e |
|
|
| install_apt() { |
| local pkgs="$1" |
| [[ -z "$pkgs" ]] && return 0 |
| echo "[install] APT packages: $pkgs" |
| apt-get update -qq |
| IFS=',' read -ra LIST <<< "$pkgs" |
| for pkg in "${LIST[@]}"; do |
| pkg="$(echo "$pkg" | xargs)" |
| [[ -n "$pkg" ]] && apt-get install -y --no-install-recommends "$pkg" 2>/dev/null || echo " ⚠️ apt $pkg failed" |
| done |
| apt-get clean && rm -rf /var/lib/apt/lists/* |
| } |
|
|
| install_pip() { |
| local pkgs="$1" |
| [[ -z "$pkgs" ]] && return 0 |
| echo "[install] PIP packages: $pkgs" |
| IFS=',' read -ra LIST <<< "$pkgs" |
| for pkg in "${LIST[@]}"; do |
| pkg="$(echo "$pkg" | xargs)" |
| [[ -n "$pkg" ]] && pip3 install --no-cache-dir --break-system-packages "$pkg" 2>/dev/null || echo " ⚠️ pip $pkg failed" |
| done |
| } |
|
|
| install_npm() { |
| local pkgs="$1" |
| [[ -z "$pkgs" ]] && return 0 |
| echo "[install] NPM global packages: $pkgs" |
| IFS=',' read -ra LIST <<< "$pkgs" |
| for pkg in "${LIST[@]}"; do |
| pkg="$(echo "$pkg" | xargs)" |
| [[ -n "$pkg" ]] && npm install -g "$pkg" --unsafe-perm 2>/dev/null || echo " ⚠️ npm $pkg failed" |
| done |
| } |
|
|
| install_apt "${INSTALL_PROGRAMS_APT:-${INSTALL_PROGRAMS:-}}" |
| install_pip "${INSTALL_PROGRAMS_PIP:-}" |
| install_npm "${INSTALL_PROGRAMS_NPM:-}" |
| echo "[install] All programs installed" |