fix(discourse-themes): fix contrast bugs, darkmode scheme and apply cyber glassmorphism styling
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# deploy.sh - Deploy and Sync Discourse Themes
|
||||
# Domains: info-board.win / w-make.org
|
||||
# deploy.sh - Robust Discourse Theme Deploy & Sync Manager
|
||||
# Domain: info-board.win / w-make.org
|
||||
# Target Host: free-warez.win -> Discourse Container (app)
|
||||
|
||||
set -euo pipefail
|
||||
@@ -9,59 +9,62 @@ TARGET_HOST="free-warez.win"
|
||||
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
THEMES_DIR="$LOCAL_DIR/themes"
|
||||
|
||||
THEME_ID="${1:-41}"
|
||||
echo "🚀 Discourse Theme Deploy & Sync Manager"
|
||||
echo " Target Host: $TARGET_HOST (Discourse container 'app')"
|
||||
echo " Target Theme ID: $THEME_ID"
|
||||
echo "========================================================="
|
||||
|
||||
# 1. Check SSH connection
|
||||
echo "📡 Checking SSH connection to $TARGET_HOST..."
|
||||
if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 "$TARGET_HOST" exit; then
|
||||
echo "❌ Cannot connect to $TARGET_HOST via SSH."
|
||||
if [ "$THEME_ID" = "41" ]; then
|
||||
SCSS_FILE="$THEMES_DIR/41_air_theme/common_scss.scss"
|
||||
TARGET_ID=0
|
||||
FIELD_NAME="scss"
|
||||
elif [ "$THEME_ID" = "39" ]; then
|
||||
SCSS_FILE="$THEMES_DIR/39_w-make_theme/common_scss.scss"
|
||||
TARGET_ID=0
|
||||
FIELD_NAME="scss"
|
||||
else
|
||||
echo "Usage: ./deploy.sh [41|39]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
THEME_ID="${1:-39}"
|
||||
|
||||
if [ "$THEME_ID" = "39" ]; then
|
||||
SCSS_FILE="$THEMES_DIR/39_w-make_theme/common_scss.scss"
|
||||
if [ ! -f "$SCSS_FILE" ]; then
|
||||
SCSS_FILE="$THEMES_DIR/w-make-theme.scss"
|
||||
fi
|
||||
echo "🔄 Deploying W-MAKE Theme (ID: 39) from $SCSS_FILE..."
|
||||
scp "$SCSS_FILE" "$TARGET_HOST:/tmp/w-make-theme.scss"
|
||||
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "psql -d discourse" << "SQL"
|
||||
UPDATE theme_fields
|
||||
SET value = pg_read_file('\''/tmp/w-make-theme.scss'\'')
|
||||
WHERE theme_id = 39 AND name = '\''scss'\'';
|
||||
|
||||
UPDATE themes
|
||||
SET updated_at = NOW()
|
||||
WHERE id = 39;
|
||||
SQL
|
||||
rm -f /tmp/w-make-theme.scss
|
||||
'
|
||||
elif [ "$THEME_ID" = "41" ]; then
|
||||
echo "🔄 Deploying Air Theme (ID: 41) common SCSS..."
|
||||
SCSS_FILE="$THEMES_DIR/41_air_theme/common_scss.scss"
|
||||
scp "$SCSS_FILE" "$TARGET_HOST:/tmp/air-theme.scss"
|
||||
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "psql -d discourse" << "SQL"
|
||||
UPDATE theme_fields
|
||||
SET value = pg_read_file('\''/tmp/air-theme.scss'\'')
|
||||
WHERE theme_id = 41 AND name = '\''scss'\'' AND target_id = 0;
|
||||
|
||||
UPDATE themes
|
||||
SET updated_at = NOW()
|
||||
WHERE id = 41;
|
||||
SQL
|
||||
rm -f /tmp/air-theme.scss
|
||||
'
|
||||
else
|
||||
echo "ℹ️ Custom theme ID: $THEME_ID provided."
|
||||
if [ ! -f "$SCSS_FILE" ]; then
|
||||
echo "❌ Theme file $SCSS_FILE not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Invalidate cache & recompile
|
||||
echo "🔄 Clearing Discourse theme cache..."
|
||||
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "bundle exec rails runner \"Theme.find_by(id: $THEME_ID)&.changed_fields&.clear; Discourse.cache.clear\" 2>/dev/null || true"'
|
||||
echo "🔄 Updating Theme $THEME_ID ($FIELD_NAME, target: $TARGET_ID)..."
|
||||
python3 - << PYEOF
|
||||
import subprocess
|
||||
|
||||
echo "✅ Discourse theme(s) updated successfully!"
|
||||
with open('$SCSS_FILE', 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
hex_data = content.encode('utf-8').hex()
|
||||
|
||||
sql = f"""
|
||||
UPDATE theme_fields
|
||||
SET value = convert_from(decode('{hex_data}', 'hex'), 'UTF8')
|
||||
WHERE theme_id = $THEME_ID AND name = '$FIELD_NAME' AND target_id = $TARGET_ID;
|
||||
|
||||
UPDATE themes SET updated_at = NOW() WHERE id = $THEME_ID;
|
||||
"""
|
||||
|
||||
p = subprocess.run(
|
||||
['ssh', '$TARGET_HOST', 'docker exec -i app su - discourse -c "psql -d discourse"'],
|
||||
input=sql,
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
|
||||
if p.returncode != 0:
|
||||
print("Error:", p.stderr)
|
||||
exit(1)
|
||||
else:
|
||||
print(p.stdout.strip())
|
||||
PYEOF
|
||||
|
||||
echo "🔄 Reloading Unicorn workers to recompile theme assets immediately..."
|
||||
ssh "$TARGET_HOST" 'docker exec app sv restart unicorn 2>/dev/null || docker exec app /usr/bin/supervisorctl restart unicorn 2>/dev/null || docker restart app'
|
||||
|
||||
echo "✅ Theme $THEME_ID deployed and recompiled!"
|
||||
echo "✨ Deployment complete!"
|
||||
|
||||
Reference in New Issue
Block a user