# Define the version of the binary to download VERSION="v1.7.27" # 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 # Get the directory where this script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "Script directory: $SCRIPT_DIR" 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 case $ARCH in "x86_64") ARCH="x64" ;; "arm64"|"aarch64") ARCH="arm64" ;; *) echo "Unsupported architecture: $ARCH" exit 1 ;; esac echo "Detected OS: $OS" echo "Detected Architecture: $ARCH" # Function to construct the binary download URL based on version, OS, and architecture get_binary_url() { echo "https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/$VERSION/tailwindcss-extra-$OS-$ARCH" } # Create the 'tw' directory for storing the downloaded binary TW_DIR="${SCRIPT_DIR}/tw" mkdir -p "$TW_DIR" # Set the binary path BINARY="${TW_DIR}/tailwindcss-extra-${OS}-${ARCH}" # Check if the binary is already downloaded, otherwise download it if [ ! -f "$BINARY" ]; then echo "Binary not found, downloading version $VERSION..." DOWNLOAD_URL=$(get_binary_url) if [ -z "$DOWNLOAD_URL" ]; then echo "No suitable release found for this OS and architecture." exit 1 fi # Download the binary curl -L "$DOWNLOAD_URL" -o "$BINARY" echo "Downloaded binary to: $BINARY" fi # Make the binary executable chmod +x "$BINARY" echo "Using binary: $BINARY" echo "Extensions: $EXTENSIONS" echo "Directory: $DIRECTORY" echo "Output Directory: $OUTPUT_DIR" # 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") done # 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/,$//') # Generate Tailwind config in script directory CONFIG_FILE="${SCRIPT_DIR}/tailwind.config.js" echo "module.exports = { content: [$INCLUDE_FILES_ARRAY], theme: { extend: {}, }, daisyui: { themes: [\"night\"], }, plugins: [require('daisyui'), require('@tailwindcss/typography')], }" > "$CONFIG_FILE" # Run the binary with the generated config "$BINARY" build -i "${SCRIPT_DIR}/base.css" -c "$CONFIG_FILE" -o "${OUTPUT_DIR}/styles.css" --minify # Wait for all background processes to finish wait