feat: export complete Discourse themes ecosystem (16 themes, SCSS, JS components and color schemes)
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
# deploy.sh - Deploy and Sync Discourse Themes
|
||||
# Domains: info-board.win / w-make.org
|
||||
# Target Host: free-warez.win -> Discourse Container (app)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
TARGET_HOST="free-warez.win"
|
||||
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
THEMES_DIR="$LOCAL_DIR/themes"
|
||||
|
||||
echo "🚀 Discourse Theme Deploy & Sync Manager"
|
||||
echo " Target Host: $TARGET_HOST (Discourse container 'app')"
|
||||
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."
|
||||
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."
|
||||
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 "✅ Discourse theme(s) updated successfully!"
|
||||
echo "✨ Deployment complete!"
|
||||
Reference in New Issue
Block a user