86 lines
2.1 KiB
Bash
Executable File
86 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# ==========================================
|
|
# Chat Switchboard - Build Script
|
|
# ==========================================
|
|
# Combines src/ files into a single standalone HTML file
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SRC_DIR="$SCRIPT_DIR/src"
|
|
OUTPUT_DIR="$SCRIPT_DIR/standalone"
|
|
OUTPUT_FILE="$OUTPUT_DIR/index.html"
|
|
|
|
echo "🔀 Building Chat Switchboard..."
|
|
|
|
# Ensure output directory exists
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
# Read source files
|
|
CSS_CONTENT=$(cat "$SRC_DIR/css/styles.css")
|
|
JS_STORAGE=$(cat "$SRC_DIR/js/storage.js")
|
|
JS_STATE=$(cat "$SRC_DIR/js/state.js")
|
|
JS_API=$(cat "$SRC_DIR/js/api.js")
|
|
JS_UI=$(cat "$SRC_DIR/js/ui.js")
|
|
JS_APP=$(cat "$SRC_DIR/js/app.js")
|
|
|
|
# Read HTML and extract head/body content
|
|
HTML_CONTENT=$(cat "$SRC_DIR/index.html")
|
|
|
|
# Create standalone file
|
|
cat > "$OUTPUT_FILE" << 'HTMLEOF'
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Chat Switchboard</title>
|
|
<style>
|
|
HTMLEOF
|
|
|
|
# Append CSS
|
|
echo "$CSS_CONTENT" >> "$OUTPUT_FILE"
|
|
|
|
cat >> "$OUTPUT_FILE" << 'HTMLEOF'
|
|
</style>
|
|
</head>
|
|
HTMLEOF
|
|
|
|
# Extract body content (between <body> and </body>, excluding script tags)
|
|
BODY_CONTENT=$(echo "$HTML_CONTENT" | sed -n '/<body>/,/<\/body>/p' | sed '1d;$d' | sed '/<script/,/<\/script>/d')
|
|
|
|
echo "$BODY_CONTENT" >> "$OUTPUT_FILE"
|
|
|
|
# Add combined JavaScript
|
|
cat >> "$OUTPUT_FILE" << 'HTMLEOF'
|
|
<script>
|
|
HTMLEOF
|
|
|
|
echo "$JS_STORAGE" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "$JS_STATE" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "$JS_API" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "$JS_UI" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "$JS_APP" >> "$OUTPUT_FILE"
|
|
|
|
cat >> "$OUTPUT_FILE" << 'HTMLEOF'
|
|
</script>
|
|
</body>
|
|
</html>
|
|
HTMLEOF
|
|
|
|
# Get file size
|
|
SIZE=$(wc -c < "$OUTPUT_FILE" | tr -d ' ')
|
|
SIZE_KB=$((SIZE / 1024))
|
|
|
|
echo "✅ Build complete!"
|
|
echo " Output: $OUTPUT_FILE"
|
|
echo " Size: ${SIZE_KB}KB ($SIZE bytes)"
|
|
echo ""
|
|
echo "📦 To use:"
|
|
echo " 1. Open standalone/index.html in a browser"
|
|
echo " 2. Or serve with: python3 -m http.server 8080"
|