Initial commit
This commit is contained in:
85
build.sh
Executable file
85
build.sh
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user