Compare commits

..

2 Commits

Author SHA1 Message Date
MickLesk
dbf3fa6f1d fix(tools.func): remove dangerous trap in create_temp_dir()
The EXIT/ERR/INT/TERM trap inside create_temp_dir() overwrites any
global traps and fires when the shell exits, not when the calling
function returns. Since the function is a utility that returns a path
via stdout, the trap fires immediately on function return and cannot
properly clean up the caller's temp dir. Callers already handle their
own cleanup via explicit rm -rf.
2026-03-19 20:26:38 +01:00
MickLesk
876d14721d refactor(tools.func): quality-of-life improvements
- setup_java(): replace dpkg -l with dpkg-query to avoid column truncation
  that caused version detection to fail and trigger unnecessary reinstalls
- get_cached_version(): return 1 when cache file not found (was always 0)
- setup_uv(): use trap RETURN instead of EXIT to avoid overwriting global
  traps and ensure cleanup runs on function return, not shell exit
- setup_docker(): declare DOCKER_CURRENT_VERSION and DOCKER_LATEST_VERSION
  as local to prevent global namespace pollution
2026-03-19 20:20:02 +01:00
3 changed files with 11 additions and 32 deletions

View File

@@ -34,14 +34,10 @@ function update_script() {
msg_ok "Stopped services"
cp /opt/reactive-resume/.env /opt/reactive-resume.env.bak
NODE_VERSION="24" setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "tarball" "latest" "/opt/reactive-resume"
msg_info "Updating Reactive Resume (Patience)"
cd /opt/reactive-resume
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
corepack enable
corepack prepare --activate
export CI="true"
export NODE_ENV="production"
$STD pnpm install --frozen-lockfile

View File

@@ -15,7 +15,7 @@ update_os
PG_VERSION="16" setup_postgresql
PG_DB_NAME="reactive_resume" PG_DB_USER="reactive_resume" setup_postgresql_db
NODE_VERSION="24" setup_nodejs
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
msg_info "Installing Dependencies"
$STD apt install -y chromium
@@ -25,9 +25,6 @@ fetch_and_deploy_gh_release "reactive-resume" "amruthpillai/reactive-resume" "ta
msg_info "Building Reactive Resume (Patience)"
cd /opt/reactive-resume
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
corepack enable
corepack prepare --activate
export NODE_ENV="production"
export CI="true"
$STD pnpm install --frozen-lockfile

View File

@@ -282,7 +282,7 @@ get_cached_version() {
cat "/var/cache/app-versions/${app}_version.txt"
return 0
fi
return 0
return 1
}
# ------------------------------------------------------------------------------
@@ -1100,8 +1100,9 @@ get_system_arch() {
# ------------------------------------------------------------------------------
create_temp_dir() {
local tmp_dir=$(mktemp -d)
# Set trap to cleanup on EXIT, ERR, INT, TERM
trap "rm -rf '$tmp_dir'" EXIT ERR INT TERM
# Callers should handle their own cleanup (rm -rf "$tmpdir")
# Do NOT set trap here — it would overwrite global traps and only fire
# when create_temp_dir() itself returns, not the calling function
echo "$tmp_dir"
}
@@ -5351,26 +5352,9 @@ function setup_java() {
"main"
fi
# Get currently installed version
# Get currently installed version (use dpkg-query to avoid column truncation)
local INSTALLED_VERSION=""
if dpkg -l | grep -q "temurin-.*-jdk" 2>/dev/null; then
INSTALLED_VERSION=$(dpkg -l 2>/dev/null | awk '/temurin-.*-jdk/{print $2}' | grep -oP 'temurin-\K[0-9]+' | head -n1 || echo "")
fi
# Validate INSTALLED_VERSION is not empty if JDK package found
local JDK_COUNT=0
JDK_COUNT=$(dpkg -l 2>/dev/null | grep -c "temurin-.*-jdk" || true)
if [[ -z "$INSTALLED_VERSION" && "${JDK_COUNT:-0}" -gt 0 ]]; then
msg_warn "Found Temurin JDK but cannot determine version - attempting reinstall"
# Try to get actual package name for purge
local OLD_PACKAGE
OLD_PACKAGE=$(dpkg -l 2>/dev/null | awk '/temurin-.*-jdk/{print $2}' | head -n1 || echo "")
if [[ -n "$OLD_PACKAGE" ]]; then
msg_info "Removing existing package: $OLD_PACKAGE"
$STD apt purge -y "$OLD_PACKAGE" || true
fi
INSTALLED_VERSION="" # Reset to trigger fresh install
fi
INSTALLED_VERSION=$(dpkg-query -W -f '${Package}\n' 2>/dev/null | grep -oP '^temurin-\K[0-9]+(?=-jdk$)' | head -n1 || echo "")
# Scenario 1: Already at correct version
if [[ "$INSTALLED_VERSION" == "$JAVA_VERSION" ]]; then
@@ -7849,8 +7833,8 @@ function setup_uv() {
local TMP_DIR=$(mktemp -d)
local CACHED_VERSION
# trap for TMP Cleanup
trap "rm -rf '$TMP_DIR'" EXIT
# trap for TMP Cleanup (RETURN instead of EXIT to avoid overwriting global traps)
trap "rm -rf '$TMP_DIR'" RETURN
CACHED_VERSION=$(get_cached_version "uv")
@@ -8120,6 +8104,8 @@ function setup_docker() {
local docker_installed=false
local portainer_installed=false
local USE_DOCKER_REPO="${USE_DOCKER_REPO:-false}"
local DOCKER_CURRENT_VERSION=""
local DOCKER_LATEST_VERSION=""
# Check if Docker is already installed
if command -v docker &>/dev/null; then