2024-05-07 18:03:54 -06:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Parse command-line arguments
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
case $1 in
|
|
|
|
-e|--extensions)
|
|
|
|
EXTENSIONS="$2"
|
|
|
|
shift; shift
|
|
|
|
;;
|
|
|
|
-d|--directory)
|
|
|
|
DIRECTORY="$2"
|
|
|
|
shift; shift
|
|
|
|
;;
|
|
|
|
-o|--output-dir)
|
|
|
|
OUTPUT_DIR="$2"
|
|
|
|
shift; shift
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Unknown argument: $1"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
2023-05-18 20:04:55 -06:00
|
|
|
|
2024-12-18 23:55:58 -06:00
|
|
|
# Get the directory where this script is located
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
echo "Script directory: $SCRIPT_DIR"
|
|
|
|
|
2023-05-18 20:04:55 -06:00
|
|
|
OS=$(uname -s)
|
|
|
|
ARCH=$(uname -m)
|
|
|
|
|
|
|
|
# Normalize OS and ARCH identifiers
|
|
|
|
case $OS in
|
|
|
|
"Darwin")
|
|
|
|
OS="macos"
|
|
|
|
;;
|
|
|
|
"Linux")
|
|
|
|
OS="linux"
|
|
|
|
;;
|
|
|
|
"CYGWIN"*|"MINGW"*|"MSYS"*)
|
|
|
|
OS="windows"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Unknown operating system: $OS"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2024-04-17 18:37:39 -06:00
|
|
|
case $ARCH in
|
|
|
|
"x86_64")
|
|
|
|
ARCH="x64"
|
|
|
|
;;
|
2024-12-18 23:55:58 -06:00
|
|
|
"arm64"|"aarch64")
|
2024-04-17 18:37:39 -06:00
|
|
|
ARCH="arm64"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Unsupported architecture: $ARCH"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
2024-12-18 23:55:58 -06:00
|
|
|
|
|
|
|
echo "Detected OS: $OS"
|
|
|
|
echo "Detected Architecture: $ARCH"
|
|
|
|
|
|
|
|
# Use tw directory in script location
|
|
|
|
BINARY="${SCRIPT_DIR}/tw/${OS}-${ARCH}"
|
2024-04-17 18:37:39 -06:00
|
|
|
if [ "$OS" = "windows" ]; then
|
|
|
|
BINARY="${BINARY}.exe"
|
2023-05-18 20:04:55 -06:00
|
|
|
fi
|
|
|
|
|
2024-12-18 23:55:58 -06:00
|
|
|
echo "Looking for binary at: $BINARY"
|
2024-05-07 18:03:54 -06:00
|
|
|
|
2024-12-18 23:55:58 -06:00
|
|
|
# Check if binary exists
|
|
|
|
if [ ! -f "$BINARY" ]; then
|
|
|
|
echo "Binary not found: $BINARY"
|
|
|
|
echo "Contents of ${SCRIPT_DIR}/tw/:"
|
|
|
|
ls -la "${SCRIPT_DIR}/tw/"
|
2024-05-07 18:03:54 -06:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2024-12-18 23:55:58 -06:00
|
|
|
# Make binary executable
|
|
|
|
chmod +x "$BINARY"
|
|
|
|
|
|
|
|
echo "Using binary: $BINARY"
|
|
|
|
echo "Extensions: $EXTENSIONS"
|
|
|
|
echo "Directory: $DIRECTORY"
|
|
|
|
echo "Output Directory: $OUTPUT_DIR"
|
|
|
|
|
2024-05-07 18:03:54 -06:00
|
|
|
# Initialize an array for name conditions
|
|
|
|
name_conditions=()
|
|
|
|
|
|
|
|
# Assuming $EXTENSIONS is a comma-separated list of extensions
|
|
|
|
IFS=',' read -ra ADDR <<< "$EXTENSIONS"
|
|
|
|
for ext in "${ADDR[@]}"; do
|
|
|
|
name_conditions+=(-name "*.$ext")
|
2023-05-18 20:04:55 -06:00
|
|
|
done
|
|
|
|
|
2024-05-07 18:03:54 -06:00
|
|
|
# Use find with the array of conditions
|
|
|
|
INCLUDE_FILES=$(find "$DIRECTORY" -type f \( "${name_conditions[@]}" \))
|
|
|
|
|
|
|
|
echo "Files found: $INCLUDE_FILES"
|
|
|
|
|
|
|
|
INCLUDE_FILES_ARRAY=$(echo "$INCLUDE_FILES" | awk '{printf "\"%s\",", $0}' | sed 's/,$//')
|
|
|
|
|
2024-12-18 23:55:58 -06:00
|
|
|
# Generate Tailwind config in script directory
|
|
|
|
CONFIG_FILE="${SCRIPT_DIR}/tailwind.config.js"
|
2024-05-07 18:03:54 -06:00
|
|
|
echo "module.exports = {
|
|
|
|
content: [$INCLUDE_FILES_ARRAY],
|
|
|
|
theme: {
|
|
|
|
extend: {},
|
|
|
|
},
|
|
|
|
daisyui: {
|
|
|
|
themes: [\"night\"],
|
|
|
|
},
|
|
|
|
plugins: [require('daisyui'), require('@tailwindcss/typography')],
|
2024-12-18 23:55:58 -06:00
|
|
|
}" > "$CONFIG_FILE"
|
2024-08-06 14:37:44 -06:00
|
|
|
|
2024-05-07 18:03:54 -06:00
|
|
|
# Run the binary with the generated config
|
2024-12-18 23:55:58 -06:00
|
|
|
"$BINARY" build -i "${SCRIPT_DIR}/base.css" -c "$CONFIG_FILE" -o "${OUTPUT_DIR}/styles.css" --minify
|
2024-05-07 18:03:54 -06:00
|
|
|
|
2023-05-18 20:04:55 -06:00
|
|
|
# Wait for all background processes to finish
|
2024-12-18 23:55:58 -06:00
|
|
|
wait
|