#!/usr/bin/env bash

csensitive=false
patterns=()

# Parse flags and patterns
while [[ $# -gt 0 ]]; do
    case "$1" in
        -c|--case-sensitive)
            csensitive=true
            shift
            ;;
        -h|--help)
            echo "Usage: $0 [-c|--case-sensitive] <pattern> [<pattern>...]" >&2
            exit 1
            ;;
        -* )
            echo "Unknown option: $1" >&2
            echo "Usage: $0 [-c|--case-sensitive] <pattern> [<pattern>...]" >&2
            exit 1
            ;;
        * )
            patterns+=("$1")
            shift
            ;;
    esac
done

# Ensure at least one pattern is provided
if (( ${#patterns[@]} == 0 )); then
    echo "Usage: $0 [-c|--case-sensitive] <pattern> [<pattern>...]" >&2
    exit 1
fi

# Build common grep options
grep_opts=( -nR -H --color=tty )
if ! $csensitive; then
    grep_opts+=( -i )
fi

# Build -e arguments for each pattern
pattern_opts=()
for pat in "${patterns[@]}"; do
    pattern_opts+=( -e "$pat" )
done

# Define search paths
declare -a php_sea=(".")
declare -a css_sea=(".")
declare -a js_sea=(".")

# Search PHP files
for vs in "${php_sea[@]}"; do
    grep "${grep_opts[@]}" --include="*.php" "${pattern_opts[@]}" "$vs"
done

# Search CSS files (exclude fontawesome)
for vs in "${css_sea[@]}"; do
    grep "${grep_opts[@]}" --include="*.css" "${pattern_opts[@]}" "$vs" \
        | grep -iv "fontawesome"
done

# Search JS files
for vs in "${js_sea[@]}"; do
    grep "${grep_opts[@]}" --include="*.js" "${pattern_opts[@]}" "$vs"
done
