This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/build.sh
2026-02-16 14:15:46 +00:00

89 lines
2.2 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_BACKEND=$(cat "$SRC_DIR/js/backend.js")
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_BACKEND" >> "$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"