#!/bin/bash
# cocok-aturan.sh -- mini rule matcher untuk memahami evaluasi udev.
# Pemakaian: ./cocok-aturan.sh <file-rule> <file-event>
# Setiap syarat K=="V" pada rule harus ada pada file event sebagai baris "K=V".
# Kunci ENV{X} dicocokkan ke property event "X=V" (seperti perilaku udev).
# Assignment (SYMLINK+=, MODE=, dst.) bukan syarat, jadi diabaikan.

if [ $# -lt 2 ]; then
    # dipanggil tanpa argumen -> tidak ada rule/event yang diuji
    exit 0
fi

aturan=$1
acara=$2

for syarat in $(grep -oE '[A-Z]+(\{[a-zA-Z0-9_]+\})?=="[^"]+"' "$aturan" \
                | tr -d '"' | sed 's/==/=/'); do
    kunci=${syarat%%=*}
    kunci=$(printf '%s' "$kunci" | sed 's/^ENV{\([a-zA-Z0-9_]*\)}$/\1/')
    nilai=${syarat#*=}
    if ! grep -qxF "$kunci=$nilai" "$acara"; then
        echo "TIDAK COCOK: syarat $syarat tidak ada pada event"
        exit 0
    fi
done
echo "COCOK: aturan dieksekusi untuk event ini"
