#!/usr/bin/env python3
"""
Zadanie 7: Przeszukiwacz plikow w katalogu
Program rekursywnie przeszukuje katalog w poszukiwaniu plikow wedlug wzorca.
"""

import os
import fnmatch
import sys


def szukaj_plikow(katalog, wzorzec, max_glebokosc=None):
    """Rekurencyjnie szuka plikow wedlug wzorca."""
    znalezione = []
    
    if not os.path.isdir(katalog):
        print(f"Blad: '{katalog}' nie jest katalogiem.")
        return znalezione
    
    for root, dirs, files in os.walk(katalog):
        glebokosc = root.replace(katalog, '').count(os.sep)
        
        if max_glebokosc is not None and glebokosc > max_glebokosc:
            continue
        
        for plik in files:
            if fnmatch.fnmatch(plik, wzorzec):
                pelna_sciezka = os.path.join(root, plik)
                znalezione.append(pelna_sciezka)
    
    return znalezione


def main():
    """Glowna funkcja programu."""
    if len(sys.argv) < 3:
        print("Uzycie: python 01_python_z07.py <katalog> <wzorzec> [glebokosc]")
        print("Przyklad: python 01_python_z07.py . *.py")
        print("Przyklad: python 01_python_z07.py C:/projekty *.txt 2")
        sys.exit(1)
    
    katalog = sys.argv[1]
    wzorzec = sys.argv[2]
    max_glebokosc = None
    
    if len(sys.argv) > 3:
        try:
            max_glebokosc = int(sys.argv[3])
        except ValueError:
            pass
    
    print("=" * 50)
    print("  PRZESZUKIWACZ PLIKOW")
    print("=" * 50)
    print(f"Katalog: {katalog}")
    print(f"Wzorzec: {wzorzec}")
    if max_glebokosc is not None:
        print(f"Maksymalna glebokosc: {max_glebokosc}")
    print("-" * 50)
    
    znalezione = szukaj_plikow(katalog, wzorzec, max_glebokosc)
    
    if not znalezione:
        print("Nie znaleziono zadnych plikow.")
    else:
        print(f"Znaleziono {len(znalezione)} plikow:\n")
        for i, sciezka in enumerate(znalezione, 1):
            print(f"{i}. {sciezka}")


if __name__ == "__main__":
    main()