#!/usr/bin/env python3
"""Inventory every distinct color token in the project; flag greens."""
import os
import re
from collections import Counter

ROOT = "/home/z/my-project/fightskill/app"
hexes = Counter()
rgbs = Counter()
files = {}

HEX_RE = re.compile(r"#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})\b")
RGB_RE = re.compile(r"rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:[,/]\s*([\d.]+))?\s*\)")

for dirpath, _, fns in os.walk(ROOT):
    for fn in fns:
        if not fn.endswith((".css", ".html", ".js")):
            continue
        p = os.path.join(dirpath, fn)
        src = open(p, encoding="utf-8", errors="replace").read()
        for m in HEX_RE.finditer(src):
            h = "#" + m.group(1).upper()
            hexes[h] += 1
            files.setdefault(h, set()).add(os.path.relpath(p, ROOT))
        for m in RGB_RE.finditer(src):
            r, g, b = int(m.group(1)), int(m.group(2)), int(m.group(3))
            key = f"rgb({r},{g},{b})"
            rgbs[key] += 1
            files.setdefault(key, set()).add(os.path.relpath(p, ROOT))


def is_greenish(r, g, b):
    return g > 120 and g > r * 1.45 and g > b * 1.45


def show(tokens, label):
    print(f"── {label} (green-dominant) ──")
    for tok, cnt in tokens.most_common():
        if tok.startswith("#"):
            v = tok.lstrip("#")
            if len(v) == 3:
                v = "".join(c * 2 for c in v)
            r, g, b = (int(v[i:i + 2], 16) for i in (0, 2, 4))
        else:
            r, g, b = map(int, tok[4:-1].split(","))
        if is_greenish(r, g, b):
            fl = sorted(files[tok])
            print(f"  {tok:18s} x{cnt:<4d} {len(fl)} files")
            for f in fl[:14]:
                print(f"      · {f}")


show(hexes, "HEX")
show(rgbs, "RGB()")
