You've already forked Atomcms-edit
refactor: extract git_update function, add APP_URL fallback, validate dirs upfront
This commit is contained in:
+65
-71
@@ -11,7 +11,12 @@ if [ -f "$SCRIPT_DIR/.env" ]; then
|
|||||||
set +a
|
set +a
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prompt for site URL before unbuffer exec, so interactive input works
|
# Use CMS APP_URL as fallback for NITRO_SITE_URL, then prompt if still unset
|
||||||
|
if [ -z "${NITRO_SITE_URL:-}" ] && [ -n "${APP_URL:-}" ]; then
|
||||||
|
NITRO_SITE_URL="$APP_URL"
|
||||||
|
echo "--> Using APP_URL from .env: $NITRO_SITE_URL"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${NITRO_SITE_URL:-}" ]; then
|
if [ -z "${NITRO_SITE_URL:-}" ]; then
|
||||||
read -r -p "Enter your site URL (e.g. https://example.com): " NITRO_SITE_URL
|
read -r -p "Enter your site URL (e.g. https://example.com): " NITRO_SITE_URL
|
||||||
NITRO_SITE_URL="${NITRO_SITE_URL%/}"
|
NITRO_SITE_URL="${NITRO_SITE_URL%/}"
|
||||||
@@ -22,14 +27,14 @@ if [ -z "${NITRO_SITE_URL:-}" ]; then
|
|||||||
export NITRO_SITE_URL
|
export NITRO_SITE_URL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prompt for branch if not set in .env
|
# Prompt for branch if not set in .env, default to main
|
||||||
if [ -z "${NITRO_BRANCH:-}" ]; then
|
if [ -z "${NITRO_BRANCH:-}" ]; then
|
||||||
read -r -p "Enter branch to use (main/dev) [main]: " NITRO_BRANCH
|
read -r -p "Enter branch (main/dev) [main]: " NITRO_BRANCH
|
||||||
NITRO_BRANCH="${NITRO_BRANCH:-main}"
|
NITRO_BRANCH="${NITRO_BRANCH:-main}"
|
||||||
if [ "$NITRO_BRANCH" != "main" ] && [ "$NITRO_BRANCH" != "dev" ]; then
|
case "$NITRO_BRANCH" in
|
||||||
echo "=== ❌ Invalid branch '$NITRO_BRANCH'. Choose 'main' or 'dev'. ==="
|
main|dev) ;;
|
||||||
exit 1
|
*) echo "=== ❌ Invalid branch '$NITRO_BRANCH'. Choose 'main' or 'dev'. ==="; exit 1 ;;
|
||||||
fi
|
esac
|
||||||
export NITRO_BRANCH
|
export NITRO_BRANCH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -64,20 +69,18 @@ NITRO_CLIENT="${NITRO_CLIENT_SRC:-/var/www/Nitro-V3}"
|
|||||||
NITRO_RENDERER="${NITRO_RENDERER_SRC:-/var/www/Nitro_Render_V3}"
|
NITRO_RENDERER="${NITRO_RENDERER_SRC:-/var/www/Nitro_Render_V3}"
|
||||||
NITRO_BRANCH="${NITRO_BRANCH:-main}"
|
NITRO_BRANCH="${NITRO_BRANCH:-main}"
|
||||||
|
|
||||||
# Derive ws/wss protocol from the site scheme
|
# Derive ws/wss protocol and domain from site URL
|
||||||
case "$NITRO_SITE_URL" in
|
case "$NITRO_SITE_URL" in
|
||||||
https://*) NITRO_WS_PROTO="wss://" ; NITRO_DOMAIN="${NITRO_SITE_URL#https://}" ;;
|
https://*) NITRO_WS_PROTO="wss://" ; NITRO_DOMAIN="${NITRO_SITE_URL#https://}" ;;
|
||||||
http://*) NITRO_WS_PROTO="ws://" ; NITRO_DOMAIN="${NITRO_SITE_URL#http://}" ;;
|
http://*) NITRO_WS_PROTO="ws://" ; NITRO_DOMAIN="${NITRO_SITE_URL#http://}" ;;
|
||||||
*) NITRO_WS_PROTO="wss://" ; NITRO_DOMAIN="$NITRO_SITE_URL" ;;
|
*) NITRO_WS_PROTO="wss://" ; NITRO_DOMAIN="$NITRO_SITE_URL" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Critical URLs for catalog icons (from env, with automatic per-site defaults)
|
# Critical URLs (override via NITRO_* env vars, auto-derived otherwise)
|
||||||
NITRO_IMAGE_LIBRARY_URL="${NITRO_IMAGE_LIBRARY_URL:-$NITRO_SITE_URL/gamedata/c_images/}"
|
NITRO_IMAGE_LIBRARY_URL="${NITRO_IMAGE_LIBRARY_URL:-$NITRO_SITE_URL/gamedata/c_images/}"
|
||||||
NITRO_HOF_FURNITURE_URL="${NITRO_HOF_FURNITURE_URL:-$NITRO_SITE_URL/gamedata/icons}"
|
NITRO_HOF_FURNITURE_URL="${NITRO_HOF_FURNITURE_URL:-$NITRO_SITE_URL/gamedata/icons}"
|
||||||
NITRO_API_URL="${NITRO_API_URL:-$NITRO_SITE_URL}"
|
NITRO_API_URL="${NITRO_API_URL:-$NITRO_SITE_URL}"
|
||||||
if [ -z "${NITRO_SOCKET_URL:-}" ]; then
|
NITRO_SOCKET_URL="${NITRO_SOCKET_URL:-${NITRO_WS_PROTO}ws.${NITRO_DOMAIN}}"
|
||||||
NITRO_SOCKET_URL="${NITRO_WS_PROTO}ws.${NITRO_DOMAIN}"
|
|
||||||
fi
|
|
||||||
NITRO_CAMERA_URL="${NITRO_CAMERA_URL:-$NITRO_SITE_URL/camera/photo/}"
|
NITRO_CAMERA_URL="${NITRO_CAMERA_URL:-$NITRO_SITE_URL/camera/photo/}"
|
||||||
NITRO_GAMEDATA_URL="${NITRO_GAMEDATA_URL:-$NITRO_SITE_URL/gamedata}"
|
NITRO_GAMEDATA_URL="${NITRO_GAMEDATA_URL:-$NITRO_SITE_URL/gamedata}"
|
||||||
NITRO_ASSET_URL="${NITRO_ASSET_URL:-$NITRO_SITE_URL/gamedata/bundled}"
|
NITRO_ASSET_URL="${NITRO_ASSET_URL:-$NITRO_SITE_URL/gamedata/bundled}"
|
||||||
@@ -88,9 +91,22 @@ MYSQL_CRED="-h $DB_HOST -P $DB_PORT -u $DB_USER --ssl-verify-server-cert=OFF"
|
|||||||
if [ -n "$DB_PASS" ]; then
|
if [ -n "$DB_PASS" ]; then
|
||||||
export MYSQL_PWD="$DB_PASS"
|
export MYSQL_PWD="$DB_PASS"
|
||||||
fi
|
fi
|
||||||
# ---------------------
|
|
||||||
|
|
||||||
# Helper: forcefully remove node_modules (with sudo fallback) and restore directory owner
|
# Verify all required directories exist before starting
|
||||||
|
REQUIRED_DIRS=(
|
||||||
|
"$EMULATOR_DIR/Emulator"
|
||||||
|
"$NITRO_RENDERER"
|
||||||
|
"$NITRO_CLIENT"
|
||||||
|
"$NITRO_SRC_DIR"
|
||||||
|
)
|
||||||
|
for dir in "${REQUIRED_DIRS[@]}"; do
|
||||||
|
if [ ! -d "$dir" ]; then
|
||||||
|
echo "=== ❌ Required directory not found: $dir ==="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Helper: forcefully remove node_modules (with sudo fallback) and restore owner
|
||||||
clean_node_modules() {
|
clean_node_modules() {
|
||||||
rm -rf node_modules 2>/dev/null || sudo rm -rf node_modules 2>/dev/null || true
|
rm -rf node_modules 2>/dev/null || sudo rm -rf node_modules 2>/dev/null || true
|
||||||
if [ "$(stat -c '%U' .)" != "$(whoami)" ] && command -v sudo &> /dev/null; then
|
if [ "$(stat -c '%U' .)" != "$(whoami)" ] && command -v sudo &> /dev/null; then
|
||||||
@@ -98,7 +114,25 @@ clean_node_modules() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Helper: git stash → checkout → pull → return 0 if new commits, 1 otherwise
|
||||||
|
git_update() {
|
||||||
|
local repo="$1"
|
||||||
|
local branch="$2"
|
||||||
|
cd "$repo"
|
||||||
|
git stash --include-untracked || true
|
||||||
|
local old_head
|
||||||
|
old_head=$(git rev-parse HEAD)
|
||||||
|
git checkout "$branch"
|
||||||
|
git pull
|
||||||
|
if [ "$(git rev-parse HEAD)" != "$old_head" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
echo "=== Starting EPIC WEB CONTROL Update ==="
|
echo "=== Starting EPIC WEB CONTROL Update ==="
|
||||||
|
echo "--> Site: $NITRO_SITE_URL | Branch: $NITRO_BRANCH"
|
||||||
|
echo ""
|
||||||
|
|
||||||
HAD_UPDATES=false
|
HAD_UPDATES=false
|
||||||
NITRO_BUILT=false
|
NITRO_BUILT=false
|
||||||
@@ -107,37 +141,31 @@ NITRO_BUILT=false
|
|||||||
# 1. Update and Build Emulator
|
# 1. Update and Build Emulator
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
echo "--> Updating Emulator..."
|
echo "--> Updating Emulator..."
|
||||||
EMULATOR_REPO_DIR="$EMULATOR_DIR/Emulator"
|
|
||||||
[ -d "$EMULATOR_REPO_DIR" ] || { echo "=== ❌ Directory not found: $EMULATOR_REPO_DIR ==="; exit 1; }
|
|
||||||
cd "$EMULATOR_REPO_DIR"
|
|
||||||
git stash --include-untracked || true
|
|
||||||
OLD_HEAD=$(git rev-parse HEAD)
|
|
||||||
git checkout "$NITRO_BRANCH"
|
|
||||||
git pull
|
|
||||||
|
|
||||||
# --- Automatic Safe Database Backup ---
|
if git_update "$EMULATOR_DIR/Emulator" "$NITRO_BRANCH"; then
|
||||||
echo "--> Creating automatic database backup before update..."
|
echo "--> New commits detected, building emulator..."
|
||||||
mkdir -p "$BACKUP_DIR"
|
HAD_UPDATES=true
|
||||||
mariadb-dump $MYSQL_CRED --force --skip-lock-tables "$DB_NAME" > "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql" || echo "--> Backup has missing tables (not critical) — update continues"
|
|
||||||
|
|
||||||
# --- Automatic SQL Import (exclusief backup dir) ---
|
# Automatic Safe Database Backup
|
||||||
echo "--> Checking for new SQL files..."
|
echo "--> Creating automatic database backup before update..."
|
||||||
if [ -d "$SQL_DIR" ]; then
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
mariadb-dump $MYSQL_CRED --force --skip-lock-tables "$DB_NAME" > "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql" || echo "--> Backup has missing tables (not critical) — update continues"
|
||||||
|
|
||||||
|
# Automatic SQL Import (exclude backup dir)
|
||||||
|
echo "--> Checking for new SQL files..."
|
||||||
|
if [ -d "$SQL_DIR" ]; then
|
||||||
find "$SQL_DIR" -name "*.sql" -mmin -10 -not -path "$BACKUP_DIR/*" -print0 2>/dev/null | while IFS= read -r -d '' sql_file; do
|
find "$SQL_DIR" -name "*.sql" -mmin -10 -not -path "$BACKUP_DIR/*" -print0 2>/dev/null | while IFS= read -r -d '' sql_file; do
|
||||||
echo "--> Importing new SQL file: $(basename "$sql_file")"
|
echo "--> Importing new SQL file: $(basename "$sql_file")"
|
||||||
mariadb $MYSQL_CRED --force "$DB_NAME" < "$sql_file" || echo "--> Error importing $(basename "$sql_file"), moving to next..."
|
mariadb $MYSQL_CRED --force "$DB_NAME" < "$sql_file" || echo "--> Error importing $(basename "$sql_file"), moving to next..."
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
echo "--> SQL directory not found, skipping SQL import."
|
echo "--> SQL directory not found, skipping SQL import."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(git rev-parse HEAD)" != "$OLD_HEAD" ]; then
|
cd "$EMULATOR_DIR/Emulator"
|
||||||
echo "--> New commits detected, building emulator..."
|
|
||||||
HAD_UPDATES=true
|
|
||||||
mvn package
|
mvn package
|
||||||
|
|
||||||
JAR_FILE=$(find target -maxdepth 1 -name 'Habbo-*-jar-with-dependencies.jar' -printf '%T@ %p\n' 2>/dev/null | sort -rn | sed -n '1s/^[0-9.]* //p' | xargs basename)
|
JAR_FILE=$(find target -maxdepth 1 -name 'Habbo-*-jar-with-dependencies.jar' -printf '%T@ %p\n' 2>/dev/null | sort -rn | sed -n '1s/^[0-9.]* //p' | xargs basename)
|
||||||
|
|
||||||
if [ -z "$JAR_FILE" ]; then
|
if [ -z "$JAR_FILE" ]; then
|
||||||
echo "=== ❌ No jar file found with pattern: target/Habbo-*-jar-with-dependencies.jar ==="
|
echo "=== ❌ No jar file found with pattern: target/Habbo-*-jar-with-dependencies.jar ==="
|
||||||
exit 1
|
exit 1
|
||||||
@@ -145,9 +173,7 @@ if [ "$(git rev-parse HEAD)" != "$OLD_HEAD" ]; then
|
|||||||
|
|
||||||
echo "--> Found jar file: $JAR_FILE"
|
echo "--> Found jar file: $JAR_FILE"
|
||||||
echo "--> Updating emulator launch file..."
|
echo "--> Updating emulator launch file..."
|
||||||
[ -d target ] || { echo "=== ❌ Build directory 'target' not found ==="; exit 1; }
|
|
||||||
cd target/
|
cd target/
|
||||||
|
|
||||||
cat << EOF > emulator
|
cat << EOF > emulator
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
file_name_emulator=emulator.log
|
file_name_emulator=emulator.log
|
||||||
@@ -166,15 +192,8 @@ fi
|
|||||||
# 2. Update Nitro_Render_V3
|
# 2. Update Nitro_Render_V3
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
echo "--> Updating Nitro_Render_V3..."
|
echo "--> Updating Nitro_Render_V3..."
|
||||||
[ -d "$NITRO_RENDERER" ] || { echo "=== ❌ Directory not found: $NITRO_RENDERER ==="; exit 1; }
|
|
||||||
cd "$NITRO_RENDERER"
|
|
||||||
|
|
||||||
git stash --include-untracked || true
|
if git_update "$NITRO_RENDERER" "$NITRO_BRANCH"; then
|
||||||
OLD_HEAD=$(git rev-parse HEAD)
|
|
||||||
git checkout "$NITRO_BRANCH"
|
|
||||||
git pull
|
|
||||||
|
|
||||||
if [ "$(git rev-parse HEAD)" != "$OLD_HEAD" ]; then
|
|
||||||
echo "--> New commits detected, running yarn install for Nitro_Render_V3..."
|
echo "--> New commits detected, running yarn install for Nitro_Render_V3..."
|
||||||
HAD_UPDATES=true
|
HAD_UPDATES=true
|
||||||
yarn install --frozen-lockfile || { echo "--> Retrying with clean node_modules..."; clean_node_modules && yarn install; }
|
yarn install --frozen-lockfile || { echo "--> Retrying with clean node_modules..."; clean_node_modules && yarn install; }
|
||||||
@@ -187,15 +206,8 @@ fi
|
|||||||
# 3. Update and Build Nitro-V3
|
# 3. Update and Build Nitro-V3
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
echo "--> Updating Nitro-V3..."
|
echo "--> Updating Nitro-V3..."
|
||||||
[ -d "$NITRO_CLIENT" ] || { echo "=== ❌ Directory not found: $NITRO_CLIENT ==="; exit 1; }
|
|
||||||
cd "$NITRO_CLIENT"
|
|
||||||
|
|
||||||
git stash --include-untracked || true
|
if git_update "$NITRO_CLIENT" "$NITRO_BRANCH"; then
|
||||||
OLD_HEAD=$(git rev-parse HEAD)
|
|
||||||
git checkout "$NITRO_BRANCH"
|
|
||||||
git pull
|
|
||||||
|
|
||||||
if [ "$(git rev-parse HEAD)" != "$OLD_HEAD" ]; then
|
|
||||||
echo "--> New commits detected, building Nitro-V3..."
|
echo "--> New commits detected, building Nitro-V3..."
|
||||||
HAD_UPDATES=true
|
HAD_UPDATES=true
|
||||||
NITRO_BUILT=true
|
NITRO_BUILT=true
|
||||||
@@ -241,15 +253,10 @@ for example_file in "$NITRO_SRC_DIR"/*.example; do
|
|||||||
*) target_name="$target_name.json" ;;
|
*) target_name="$target_name.json" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Phase 1: Merge to live config in Nitro public dir
|
|
||||||
echo "--> Merging $base -> $target_name (live)..."
|
echo "--> Merging $base -> $target_name (live)..."
|
||||||
node "$MERGE_SCRIPT" "$example_file" "$NITRO_SRC_DIR/$target_name"
|
node "$MERGE_SCRIPT" "$example_file" "$NITRO_SRC_DIR/$target_name"
|
||||||
|
|
||||||
# Phase 2: Merge to Gamedata/config for website
|
|
||||||
echo "--> Merging $base -> $target_name (gamedata)..."
|
echo "--> Merging $base -> $target_name (gamedata)..."
|
||||||
node "$MERGE_SCRIPT" "$example_file" "$GAMEDATA_CONF_DIR/$target_name"
|
node "$MERGE_SCRIPT" "$example_file" "$GAMEDATA_CONF_DIR/$target_name"
|
||||||
|
|
||||||
# Phase 3: Copy merged config to dist/configuration for live client
|
|
||||||
if [ -d "$NITRO_DIST_CONFIG_DIR" ]; then
|
if [ -d "$NITRO_DIST_CONFIG_DIR" ]; then
|
||||||
cp "$NITRO_SRC_DIR/$target_name" "$NITRO_DIST_CONFIG_DIR/$target_name"
|
cp "$NITRO_SRC_DIR/$target_name" "$NITRO_DIST_CONFIG_DIR/$target_name"
|
||||||
echo "--> [OK] Synced $target_name to dist/configuration/"
|
echo "--> [OK] Synced $target_name to dist/configuration/"
|
||||||
@@ -257,7 +264,6 @@ for example_file in "$NITRO_SRC_DIR"/*.example; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Phase 4: Restore critical icon URLs in renderer-config and ui-config
|
# Phase 4: Restore critical icon URLs in renderer-config and ui-config
|
||||||
# (prevents git pull from overwriting URLs with example values)
|
|
||||||
echo "--> Ensuring critical catalog icon URLs are correct..."
|
echo "--> Ensuring critical catalog icon URLs are correct..."
|
||||||
FORCE_CONFIG_SCRIPT=$(cat << 'PYEOF'
|
FORCE_CONFIG_SCRIPT=$(cat << 'PYEOF'
|
||||||
import json, sys, os
|
import json, sys, os
|
||||||
@@ -283,11 +289,9 @@ for path in paths:
|
|||||||
env_val = os.environ.get(f'NITRO_{key.upper().replace(".", "_")}')
|
env_val = os.environ.get(f'NITRO_{key.upper().replace(".", "_")}')
|
||||||
if env_val:
|
if env_val:
|
||||||
data[key] = env_val
|
data[key] = env_val
|
||||||
# Force /config/ path for radio and soundboard
|
|
||||||
if 'gamedata.url' in data:
|
if 'gamedata.url' in data:
|
||||||
data['radio.url'] = data['gamedata.url'] + '/config/radio-stations.json5?t=%timestamp%'
|
data['radio.url'] = data['gamedata.url'] + '/config/radio-stations.json5?t=%timestamp%'
|
||||||
data['soundboard.url'] = data['gamedata.url'] + '/config/soundboard-sounds.json5?t=%timestamp%'
|
data['soundboard.url'] = data['gamedata.url'] + '/config/soundboard-sounds.json5?t=%timestamp%'
|
||||||
# Disable Google Ads
|
|
||||||
if 'show.google.ads' in data:
|
if 'show.google.ads' in data:
|
||||||
data['show.google.ads'] = False
|
data['show.google.ads'] = False
|
||||||
with open(path, 'w') as f:
|
with open(path, 'w') as f:
|
||||||
@@ -310,24 +314,17 @@ cd "$NITRO_CLIENT" && NITRO_SRC_DIR="$NITRO_SRC_DIR" NITRO_DIST_CONFIG_DIR="$NIT
|
|||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
echo "--> Starting automated cleanup..."
|
echo "--> Starting automated cleanup..."
|
||||||
|
|
||||||
# 1. Remove emulator logs older than 14 days
|
|
||||||
echo "--> Removing emulator logs older than 14 days..."
|
echo "--> Removing emulator logs older than 14 days..."
|
||||||
find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null || true
|
find "$EMULATOR_DIR" -name "*.log" -mtime +14 -exec rm -f {} \; 2>/dev/null || true
|
||||||
|
|
||||||
# 2. Keep max 5 newest database backups, delete older ones
|
|
||||||
echo "--> Managing update backups (keeping max 5)..."
|
echo "--> Managing update backups (keeping max 5)..."
|
||||||
if [ -d "$BACKUP_DIR" ]; then
|
if [ -d "$BACKUP_DIR" ]; then
|
||||||
find "$BACKUP_DIR" -maxdepth 1 -name '*.sql' -printf '%T@ %p\n' 2>/dev/null | sort -rn | tail -n +6 | sed 's/^[0-9.]* //' | xargs -r rm -f || true
|
find "$BACKUP_DIR" -maxdepth 1 -name '*.sql' -printf '%T@ %p\n' 2>/dev/null | sort -rn | tail -n +6 | sed 's/^[0-9.]* //' | xargs -r rm -f || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 3. Clean Yarn cache to save SSD space (only if yarn was used)
|
|
||||||
if [ "$HAD_UPDATES" = true ]; then
|
if [ "$HAD_UPDATES" = true ]; then
|
||||||
echo "--> Cleaning Yarn cache..."
|
echo "--> Cleaning Yarn cache..."
|
||||||
yarn cache clean 2>/dev/null || true
|
yarn cache clean 2>/dev/null || true
|
||||||
fi
|
|
||||||
|
|
||||||
# 4. Remove old .jar files, keeping only the newest one (only if emulator was rebuilt)
|
|
||||||
if [ "$HAD_UPDATES" = true ]; then
|
|
||||||
echo "--> Cleaning up old emulator .jar files (keeping the latest)..."
|
echo "--> Cleaning up old emulator .jar files (keeping the latest)..."
|
||||||
find "$EMULATOR_DIR/Emulator/target" -maxdepth 1 -name 'Habbo-*-jar-with-dependencies.jar' -printf '%T@ %p\n' 2>/dev/null | sort -rn | tail -n +2 | sed 's/^[0-9.]* //' | xargs -r rm -f || true
|
find "$EMULATOR_DIR/Emulator/target" -maxdepth 1 -name 'Habbo-*-jar-with-dependencies.jar' -printf '%T@ %p\n' 2>/dev/null | sort -rn | tail -n +2 | sed 's/^[0-9.]* //' | xargs -r rm -f || true
|
||||||
fi
|
fi
|
||||||
@@ -377,7 +374,6 @@ echo "--> Running extra validation..."
|
|||||||
|
|
||||||
ERRORS=0
|
ERRORS=0
|
||||||
|
|
||||||
# Check build output exists
|
|
||||||
if [ "$NITRO_BUILT" = true ]; then
|
if [ "$NITRO_BUILT" = true ]; then
|
||||||
if [ -d "$NITRO_CLIENT/dist/assets" ]; then
|
if [ -d "$NITRO_CLIENT/dist/assets" ]; then
|
||||||
echo "--> [OK] Nitro-V3 build assets found"
|
echo "--> [OK] Nitro-V3 build assets found"
|
||||||
@@ -386,10 +382,9 @@ if [ "$NITRO_BUILT" = true ]; then
|
|||||||
ERRORS=$((ERRORS + 1))
|
ERRORS=$((ERRORS + 1))
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "--> [SKIP] Nitro-V3 was not rebuilt (no new commits), skipping build check"
|
echo "--> [SKIP] Nitro-V3 was not rebuilt, skipping build check"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check permissions on key files
|
|
||||||
for dir in "$NITRO_CLIENT" "$NITRO_RENDERER" "$EMULATOR_DIR" "$GAMEDATA_CONF_DIR"; do
|
for dir in "$NITRO_CLIENT" "$NITRO_RENDERER" "$EMULATOR_DIR" "$GAMEDATA_CONF_DIR"; do
|
||||||
if [ -d "$dir" ]; then
|
if [ -d "$dir" ]; then
|
||||||
OWNER=$(stat -c '%U:%G' "$dir" 2>/dev/null || echo "unknown")
|
OWNER=$(stat -c '%U:%G' "$dir" 2>/dev/null || echo "unknown")
|
||||||
@@ -403,7 +398,6 @@ for dir in "$NITRO_CLIENT" "$NITRO_RENDERER" "$EMULATOR_DIR" "$GAMEDATA_CONF_DIR
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Check if emulator service is running
|
|
||||||
if systemctl cat "$EMULATOR_SERVICE" &>/dev/null; then
|
if systemctl cat "$EMULATOR_SERVICE" &>/dev/null; then
|
||||||
SERVICE_STATUS=$(systemctl is-active "$EMULATOR_SERVICE" 2>/dev/null || echo "unknown")
|
SERVICE_STATUS=$(systemctl is-active "$EMULATOR_SERVICE" 2>/dev/null || echo "unknown")
|
||||||
if [ "$SERVICE_STATUS" = "active" ]; then
|
if [ "$SERVICE_STATUS" = "active" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user