mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	update some improvements from dev (tools.func) (#4430)
* Harmonize tools.func from DEV-Repo * Update tools.func
This commit is contained in:
		@@ -55,10 +55,16 @@ install_node_and_modules() {
 | 
				
			|||||||
    IFS=',' read -ra MODULES <<<"$NODE_MODULE"
 | 
					    IFS=',' read -ra MODULES <<<"$NODE_MODULE"
 | 
				
			||||||
    for mod in "${MODULES[@]}"; do
 | 
					    for mod in "${MODULES[@]}"; do
 | 
				
			||||||
      local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
 | 
					      local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
 | 
				
			||||||
      if [[ "$mod" == *"@"* ]]; then
 | 
					      if [[ "$mod" == @*/*@* ]]; then
 | 
				
			||||||
 | 
					        # Scoped package with version, e.g. @vue/cli-service@latest
 | 
				
			||||||
        MODULE_NAME="${mod%@*}"
 | 
					        MODULE_NAME="${mod%@*}"
 | 
				
			||||||
        MODULE_REQ_VERSION="${mod#*@}"
 | 
					        MODULE_REQ_VERSION="${mod##*@}"
 | 
				
			||||||
 | 
					      elif [[ "$mod" == *"@"* ]]; then
 | 
				
			||||||
 | 
					        # Unscoped package with version, e.g. yarn@latest
 | 
				
			||||||
 | 
					        MODULE_NAME="${mod%@*}"
 | 
				
			||||||
 | 
					        MODULE_REQ_VERSION="${mod##*@}"
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
 | 
					        # No version specified
 | 
				
			||||||
        MODULE_NAME="$mod"
 | 
					        MODULE_NAME="$mod"
 | 
				
			||||||
        MODULE_REQ_VERSION="latest"
 | 
					        MODULE_REQ_VERSION="latest"
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
@@ -101,25 +107,31 @@ install_postgresql() {
 | 
				
			|||||||
  DISTRO="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
 | 
					  DISTRO="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if command -v psql >/dev/null; then
 | 
					  if command -v psql >/dev/null; then
 | 
				
			||||||
    CURRENT_PG_VERSION="$(psql -V | grep -oP '\s\K[0-9]+(?=\.)')"
 | 
					    CURRENT_PG_VERSION="$(psql -V | awk '{print $3}' | cut -d. -f1)"
 | 
				
			||||||
    if [[ "$CURRENT_PG_VERSION" != "$PG_VERSION" ]]; then
 | 
					    if [[ "$CURRENT_PG_VERSION" == "$PG_VERSION" ]]; then
 | 
				
			||||||
      msg_info "PostgreSQL Version $CURRENT_PG_VERSION found, replacing with $PG_VERSION"
 | 
					      msg_ok "PostgreSQL $PG_VERSION is already installed"
 | 
				
			||||||
      NEED_PG_INSTALL=true
 | 
					      return
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    msg_info "Detected PostgreSQL $CURRENT_PG_VERSION, preparing upgrade to $PG_VERSION"
 | 
				
			||||||
 | 
					    NEED_PG_INSTALL=true
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_info "PostgreSQL not found, installing version $PG_VERSION"
 | 
					    msg_info "PostgreSQL not installed, proceeding with fresh install of $PG_VERSION"
 | 
				
			||||||
    NEED_PG_INSTALL=true
 | 
					    NEED_PG_INSTALL=true
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ "$NEED_PG_INSTALL" == true ]]; then
 | 
					  if [[ "$NEED_PG_INSTALL" == true ]]; then
 | 
				
			||||||
    msg_info "Stopping PostgreSQL if running"
 | 
					    if [[ -n "$CURRENT_PG_VERSION" ]]; then
 | 
				
			||||||
    systemctl stop postgresql >/dev/null 2>&1 || true
 | 
					      msg_info "Dumping all PostgreSQL data from version $CURRENT_PG_VERSION"
 | 
				
			||||||
 | 
					      su - postgres -c "pg_dumpall > /var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Removing conflicting PostgreSQL packages"
 | 
					    msg_info "Stopping PostgreSQL service"
 | 
				
			||||||
    $STD apt-get purge -y "postgresql*"
 | 
					    systemctl stop postgresql || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Removing pgdg repo and old GPG key"
 | 
				
			||||||
    rm -f /etc/apt/sources.list.d/pgdg.list /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
					    rm -f /etc/apt/sources.list.d/pgdg.list /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Setting up PostgreSQL Repository"
 | 
					    msg_info "Adding PostgreSQL PGDG repository"
 | 
				
			||||||
    curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc |
 | 
					    curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc |
 | 
				
			||||||
      gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
					      gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -127,9 +139,24 @@ install_postgresql() {
 | 
				
			|||||||
      >/etc/apt/sources.list.d/pgdg.list
 | 
					      >/etc/apt/sources.list.d/pgdg.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $STD apt-get update
 | 
					    $STD apt-get update
 | 
				
			||||||
    $STD apt-get install -y "postgresql-${PG_VERSION}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Installed PostgreSQL ${PG_VERSION}"
 | 
					    msg_info "Installing PostgreSQL $PG_VERSION"
 | 
				
			||||||
 | 
					    $STD apt-get install -y "postgresql-${PG_VERSION}" "postgresql-client-${PG_VERSION}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n "$CURRENT_PG_VERSION" ]]; then
 | 
				
			||||||
 | 
					      $STD msg_info "Removing old PostgreSQL $CURRENT_PG_VERSION packages"
 | 
				
			||||||
 | 
					      $STD apt-get purge -y "postgresql-${CURRENT_PG_VERSION}" "postgresql-client-${CURRENT_PG_VERSION}" || true
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $STD msg_info "Starting PostgreSQL $PG_VERSION"
 | 
				
			||||||
 | 
					    systemctl enable --now postgresql
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -n "$CURRENT_PG_VERSION" ]]; then
 | 
				
			||||||
 | 
					      $STD msg_info "Restoring dumped data"
 | 
				
			||||||
 | 
					      su - postgres -c "psql < /var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "PostgreSQL $PG_VERSION installed"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -245,7 +272,11 @@ install_php() {
 | 
				
			|||||||
  COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
 | 
					  COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local CURRENT_PHP
 | 
					  local CURRENT_PHP
 | 
				
			||||||
  CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
					  if command -v php >/dev/null 2>&1; then
 | 
				
			||||||
 | 
					    CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    CURRENT_PHP=""
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
 | 
					  if [[ "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
 | 
				
			||||||
    $STD echo "PHP $CURRENT_PHP detected, migrating to PHP $PHP_VERSION"
 | 
					    $STD echo "PHP $CURRENT_PHP detected, migrating to PHP $PHP_VERSION"
 | 
				
			||||||
@@ -352,7 +383,7 @@ install_go() {
 | 
				
			|||||||
      msg_error "Could not determine latest Go version"
 | 
					      msg_error "Could not determine latest Go version"
 | 
				
			||||||
      return 1
 | 
					      return 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg_info "Detected latest Go version: $GO_VERSION"
 | 
					    $STD msg_info "Detected latest Go version: $GO_VERSION"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local GO_BIN="/usr/local/bin/go"
 | 
					  local GO_BIN="/usr/local/bin/go"
 | 
				
			||||||
@@ -362,10 +393,10 @@ install_go() {
 | 
				
			|||||||
    local CURRENT_VERSION
 | 
					    local CURRENT_VERSION
 | 
				
			||||||
    CURRENT_VERSION=$("$GO_BIN" version | awk '{print $3}' | sed 's/go//')
 | 
					    CURRENT_VERSION=$("$GO_BIN" version | awk '{print $3}' | sed 's/go//')
 | 
				
			||||||
    if [[ "$CURRENT_VERSION" == "$GO_VERSION" ]]; then
 | 
					    if [[ "$CURRENT_VERSION" == "$GO_VERSION" ]]; then
 | 
				
			||||||
      msg_ok "Go $GO_VERSION already installed"
 | 
					      $STD msg_ok "Go $GO_VERSION already installed"
 | 
				
			||||||
      return 0
 | 
					      return 0
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      msg_info "Go $CURRENT_VERSION found, upgrading to $GO_VERSION"
 | 
					      $STD msg_info "Go $CURRENT_VERSION found, upgrading to $GO_VERSION"
 | 
				
			||||||
      rm -rf "$GO_INSTALL_DIR"
 | 
					      rm -rf "$GO_INSTALL_DIR"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
@@ -537,7 +568,7 @@ fetch_and_deploy_gh_release() {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tag=$(echo "$api_response" | jq -r '.tag_name // .name // empty')
 | 
					    tag=$(echo "$api_response" | jq -r '.tag_name // .name // empty')
 | 
				
			||||||
    [[ "$tag" =~ ^v[0-9] ]] && tag="${tag:1}"
 | 
					    version="${tag#v}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -z "$tag" ]]; then
 | 
					    if [[ -z "$tag" ]]; then
 | 
				
			||||||
      $STD msg_info "Empty tag received, retrying...\n"
 | 
					      $STD msg_info "Empty tag received, retrying...\n"
 | 
				
			||||||
@@ -555,12 +586,11 @@ fetch_and_deploy_gh_release() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Version comparison (if we already have this version, skip)
 | 
					  # Version comparison (if we already have this version, skip)
 | 
				
			||||||
  if [[ "$current_version" == "$tag" ]]; then
 | 
					  if [[ "$current_version" == "$version" ]]; then
 | 
				
			||||||
    $STD msg_info "Already running the latest version ($tag). Skipping update."
 | 
					    $STD msg_info "Already running the latest version ($version). Skipping update."
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  local version="$tag"
 | 
					 | 
				
			||||||
  local base_url="https://github.com/$repo/releases/download/v$tag"
 | 
					  local base_url="https://github.com/$repo/releases/download/v$tag"
 | 
				
			||||||
  local tmpdir
 | 
					  local tmpdir
 | 
				
			||||||
  tmpdir=$(mktemp -d) || return 1
 | 
					  tmpdir=$(mktemp -d) || return 1
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user