Files
insertr/justfile
Joakim 448b66a974 Fix critical enhancement hanging bug caused by nil context in content injection
Replace nil context with context.Background() in content.go to prevent database operations from hanging indefinitely. Clean up outdated documentation files and add current project structure analysis.
2025-10-26 21:26:48 +01:00

224 lines
6.5 KiB
Makefile

# Insertr Development Commands
# Use `just <command>` to run any of these tasks
# Default recipe - show available commands
default:
@just --list
# Install all dependencies (root + lib)
install:
npm install
cd lib && npm install
# Start full-stack development (primary workflow)
dev: build-lib build
#!/usr/bin/env bash
echo "🚀 Starting Full-Stack Insertr Development..."
echo "================================================"
echo "🔌 Starting Insertr server with all sites..."
echo ""
# Function to cleanup background processes
cleanup() {
echo ""
echo "🛑 Shutting down server..."
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
echo "✅ Shutdown complete"
exit 0
}
trap cleanup SIGINT SIGTERM
# Start server (serves API + all static sites)
INSERTR_DATABASE_PATH=./insertr.db ./insertr serve --dev-mode &
SERVER_PID=$!
echo ""
echo "🌐 All sites available at:"
echo " Default: http://localhost:8080/sites/default/"
echo " Simple: http://localhost:8080/sites/simple/"
echo " Simple: http://localhost:8080/sites/blog/"
echo ""
echo "📝 Full-stack ready - edit content with real-time persistence!"
echo "🔄 Press Ctrl+C to shutdown"
echo ""
# Wait for server process
wait $SERVER_PID
# Start development server for about page
dev-about: build-lib build
#!/usr/bin/env bash
echo "🚀 Starting full-stack development..."
echo "🌐 About page available at: http://localhost:8080/sites/default/about.html"
INSERTR_DATABASE_PATH=./insertr.db ./insertr serve --dev-mode
# Check project status and validate setup
check:
npm run check
# Build the entire project (library + unified binary)
build:
npm run build
# Build only the JavaScript library (includes CSS)
build-lib:
npm run build:lib
# Watch library files for changes (auto-rebuild)
watch:
cd lib && npm run dev
# Build unified binary only
build-insertr:
go build -o insertr .
# Run insertr help
help:
./insertr --help
# Enhance demo site (build-time content injection)
enhance input="demos/default" output="dist":
./insertr enhance {{input}} --output {{output}}
# === Content API Server Commands ===
# Start content API server (default port 8080)
serve port="8080":
INSERTR_DATABASE_PATH=./insertr.db ./insertr serve --port {{port}} --dev-mode
# Start API server in production mode
serve-prod port="8080" db="./insertr.db":
INSERTR_DATABASE_PATH={{db}} ./insertr serve --port {{port}}
# Check API server health
health port="8080":
@echo "🔍 Checking API server health..."
@curl -s http://localhost:{{port}}/health | jq . || echo "❌ Server not responding at localhost:{{port}}"
# Clean all build artifacts
clean:
rm -rf lib/dist
rm -rf insertr
rm -rf tmp
rm -rf dist
rm -rf node_modules
rm -rf lib/node_modules
rm -f dev.db
rm -f insertr.db
@echo "🧹 Cleaned all build artifacts"
# Lint code (placeholder for now)
lint:
npm run lint
# Run tests (placeholder for now)
test:
npm run test
# Development workflow: install deps, build lib, start dev server
dev-setup: install build-lib dev
# Production workflow: install deps, build everything
prod-build: install build
# Show project status
status:
@echo "🏗️ Insertr Project Status"
@echo "========================="
@echo "📁 Root files:"
@ls -la package.json justfile go.mod insertr.yaml 2>/dev/null || echo " Missing files"
@echo "\n📚 Library files:"
@ls -la lib/package.json lib/src lib/dist 2>/dev/null || echo " Missing library components"
@echo "\n🔧 Unified binary:"
@ls -la insertr main.go cmd/ internal/ 2>/dev/null || echo " Missing unified binary components"
@echo "\n🌐 Demo sites:"
@ls -la demos/default/index.html demos/simple/index.html demos/dan-eden-portfolio/index.html demos/devigo-web/index.html 2>/dev/null || echo " Some demo files missing"
@echo ""
@echo "🚀 Development Commands:"
@echo " just dev - Full-stack development (recommended)"
@echo " just serve - API server only (localhost:8080)"
@echo " just enhance - Build-time content injection"
@echo ""
@echo "🔍 Check server: just health"
# Generate sqlc code (for database schema changes)
sqlc:
sqlc generate
# Clean generated demo directories
clean-demos:
#!/usr/bin/env bash
echo "🧹 Cleaning generated demo directories..."
echo "========================================="
# Demo directories
if [ -d "./demos/default_enhanced" ]; then
rm -rf "./demos/default_enhanced"
echo "🗑️ Removed: default_enhanced"
fi
if [ -d "./demos/blog_enhanced/" ]; then
rm -rf "./demos/blog_enhanced/"
echo "🗑️ Removed: blog_enhanced"
fi
if [ -d "./demos/simple_enhanced" ]; then
rm -rf "./demos/simple_enhanced"
echo "🗑️ Removed: simple_enhanced"
fi
if [ -d "./demos/dan-eden-portfolio_enhanced" ]; then
rm -rf "./demos/dan-eden-portfolio_enhanced"
echo "🗑️ Removed: dan-eden-portfolio_enhanced"
fi
if [ -d "./demos/devigo-web_enhanced" ]; then
rm -rf "./demos/devigo-web_enhanced"
echo "🗑️ Removed: devigo-web_enhanced"
fi
# Clean up any temporary directories
if [ -d "./demos/dan-eden-portfolio-temp" ]; then
rm -rf "./demos/dan-eden-portfolio-temp"
echo "🗑️ Removed: dan-eden-portfolio-temp"
fi
if [ -d "./demos/simple-temp" ]; then
rm -rf "./demos/simple-temp"
echo "🗑️ Removed: simple-temp"
fi
# Legacy directories (cleanup from old workflow)
for legacy_dir in demo-site demo-site_enhanced demo_enhanced simple/test-simple simple/dan-eden-portfolio; do
if [ -d "./demos/${legacy_dir}" ]; then
rm -rf "./demos/${legacy_dir}"
echo "🗑️ Removed: ${legacy_dir} (legacy)"
fi
done
# Clean up legacy directories in simple subdirectory
if [ -d "./demos/simple" ] && [ -z "$(find ./demos/simple -maxdepth 1 -name '*.html' -o -name '*.yaml')" ]; then
# If simple directory exists but contains no HTML/YAML files, it's legacy
rm -rf "./demos/simple"/* 2>/dev/null || true
fi
echo ""
echo "✅ Demo cleanup complete!"
echo "🔧 Sites will auto-enhance when you run demo commands"