mirror of
https://github.com/swissmakers/fail2ban-ui.git
synced 2026-04-11 13:47:05 +02:00
98 lines
2.8 KiB
Bash
Executable File
98 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build script for Tailwind CSS v3
|
|
# This script builds Tailwind CSS for production use
|
|
# Always installs latest Tailwind CSS v3 (matches CDN version)
|
|
|
|
set -e
|
|
|
|
echo "Building Tailwind CSS v3 for Fail2ban-UI..."
|
|
|
|
# Check if Node.js and npm are installed
|
|
if ! command -v node &> /dev/null; then
|
|
echo "Error: Node.js is not installed. Please install Node.js first."
|
|
echo "Visit: https://nodejs.org/"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v npm &> /dev/null; then
|
|
echo "Error: npm is not installed. Please install npm first."
|
|
exit 1
|
|
fi
|
|
|
|
# Create directories if they don't exist
|
|
mkdir -p pkg/web/static
|
|
mkdir -p .tailwind-build
|
|
|
|
# Initialize package.json if it doesn't exist
|
|
if [ ! -f package.json ]; then
|
|
echo "Initializing npm package..."
|
|
npm init -y --silent
|
|
fi
|
|
|
|
# Install latest Tailwind CSS v3
|
|
echo "Installing latest Tailwind CSS v3..."
|
|
npm install -D tailwindcss@^3 --silent
|
|
|
|
# Verify the CLI binary exists
|
|
if [ ! -f "node_modules/.bin/tailwindcss" ] && [ ! -f "node_modules/tailwindcss/lib/cli.js" ]; then
|
|
echo "❌ Error: Tailwind CSS CLI not found after installation."
|
|
exit 1
|
|
fi
|
|
|
|
# Show installed version
|
|
INSTALLED_VERSION=$(npm list tailwindcss 2>/dev/null | grep "tailwindcss@" | head -1 | awk '{print $2}' || echo "unknown")
|
|
echo "Installed: $INSTALLED_VERSION"
|
|
|
|
# Create tailwind.config.js if it doesn't exist
|
|
if [ ! -f tailwind.config.js ]; then
|
|
echo "Creating Tailwind CSS configuration..."
|
|
cat > tailwind.config.js << 'EOF'
|
|
/** @type {import('tailwindcss').Config} */
|
|
module.exports = {
|
|
content: [
|
|
"./pkg/web/templates/**/*.html",
|
|
],
|
|
theme: {
|
|
extend: {},
|
|
},
|
|
plugins: [],
|
|
}
|
|
EOF
|
|
fi
|
|
|
|
# Create input CSS file if it doesn't exist
|
|
if [ ! -f .tailwind-build/input.css ]; then
|
|
echo "Creating input CSS file..."
|
|
cat > .tailwind-build/input.css << 'EOF'
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
EOF
|
|
fi
|
|
|
|
# Build Tailwind CSS
|
|
echo "Building Tailwind CSS..."
|
|
|
|
# Try different methods to run the CLI
|
|
if [ -f "node_modules/.bin/tailwindcss" ]; then
|
|
node_modules/.bin/tailwindcss -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
|
|
elif [ -f "node_modules/tailwindcss/lib/cli.js" ]; then
|
|
node node_modules/tailwindcss/lib/cli.js -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
|
|
elif command -v npx &> /dev/null; then
|
|
npx --yes tailwindcss -i .tailwind-build/input.css -o pkg/web/static/tailwind.css --minify
|
|
else
|
|
echo "❌ Error: Could not find Tailwind CSS CLI"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify output file was created and is not empty
|
|
if [ ! -f "pkg/web/static/tailwind.css" ] || [ ! -s "pkg/web/static/tailwind.css" ]; then
|
|
echo "❌ Error: Output file was not created or is empty"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Tailwind CSS v3 built successfully!"
|
|
echo "Output: pkg/web/static/tailwind.css"
|
|
echo ""
|
|
echo "The application will now use the local Tailwind CSS file instead of the CDN."
|