#!/usr/bin/env python3
"""
csv_to_xlsx.py

exports/YYYYmmdd_HHMMSS/ içindeki CSV'leri tek bir XLSX dosyasına çevirir.
- Her CSV ayrı sheet olur (dosya adı sheet adı)
- Excel uyumu için ';' ayracı ve UTF-8 BOM destekler

Çalıştır:
  python csv_to_xlsx.py exports/20260103_120000 archive.xlsx

Gereksinim:
  pip install openpyxl
"""
import sys, os, re
from pathlib import Path
import openpyxl

def safe_sheet_name(name: str) -> str:
    name = re.sub(r'\.csv$', '', name, flags=re.I)
    # Excel sheet name max 31
    name = re.sub(r'[\[\]\*\?:/\\]', '_', name)
    name = name.strip()
    if not name:
        name = "Sheet"
    return name[:31]

def read_csv(path: Path):
    # CSV'ler ; ile ve BOM'lu olabilir
    text = path.read_text(encoding="utf-8-sig", errors="ignore")
    lines = text.splitlines()
    rows = []
    for line in lines:
        # basit ; split (tırnaklı alan yok varsayımı; fputcsv zaten tırnaklar koyabilir)
        # openpyxl için yeterli: python csv modülü kullanalım
        import csv, io
        reader = csv.reader(io.StringIO(text), delimiter=';')
        return list(reader)
    return rows

def main():
    if len(sys.argv) < 3:
        print("Kullanım: python csv_to_xlsx.py <csv_klasoru> <cikis.xlsx>")
        sys.exit(1)

    in_dir = Path(sys.argv[1])
    out_path = Path(sys.argv[2])

    if not in_dir.is_dir():
        print("CSV klasörü bulunamadı:", in_dir)
        sys.exit(1)

    csv_files = sorted([p for p in in_dir.iterdir() if p.suffix.lower() == ".csv"])
    if not csv_files:
        print("CSV bulunamadı:", in_dir)
        sys.exit(1)

    wb = openpyxl.Workbook()
    # default sheet kaldır
    wb.remove(wb.active)

    for p in csv_files:
        name = safe_sheet_name(p.name)
        ws = wb.create_sheet(title=name)
        rows = read_csv(p)
        for r_idx, row in enumerate(rows, start=1):
            for c_idx, val in enumerate(row, start=1):
                ws.cell(r_idx, c_idx, val)

    wb.save(out_path)
    print("Yazıldı:", out_path)

if __name__ == "__main__":
    main()
