import os
import subprocess
import sys
import argparse

# Hilfsfunktion wie in plant2dxf.py

def check_environment_var(env_str: str, fallback: str) -> str:
    out_path = os.environ.get(env_str)
    if out_path:
        return out_path
    print(f"[WARN] Umgebungsvariable {env_str} ist nicht gesetzt oder leer. Verwende '{fallback}'.")
    return fallback


if __name__ == "__main__":
    # Argumentparser für Kommandozeilenoptionen
    parser = argparse.ArgumentParser(description="SVG/XML zu DXF Konverter")
    parser.add_argument('-i', '--input', type=str, help='Input-Verzeichnis mit SVG/XML-Dateien')
    parser.add_argument('-o', '--output', type=str, help='Output-Verzeichnis für DXF-Dateien')
    
    if len(sys.argv) == 2 and sys.argv[1] in ("-h", "--help"):
        parser.print_help()
        sys.exit(0)
        
    args = parser.parse_args()

    # Verzeichnisse über Umgebungsvariablen oder Fallback
    if args.input:
        INPUT_DIR = args.input
        print(f"Input-Verzeichnis: {INPUT_DIR} \n")
    else:
        INPUT_DIR = os.path.join(check_environment_var("PROJECT_DATA", "."), "svg")
        print(f"Kein Input-Verzeichnis angegeben, verwende Standard: {INPUT_DIR} \n")

    if args.output:
        OUTPUT_DIR = args.output
        print(f"Output-Verzeichnis: {OUTPUT_DIR} \n")
    else:
        OUTPUT_DIR = os.path.join(check_environment_var("PROJECT_WORK", "."), "converted_dxfs")
        print(f"Kein Output-Verzeichnis angegeben, verwende Standard: {OUTPUT_DIR} \n")

    INKSCAPE = "inkscape"  # ggf. vollständiger Pfad angeben

    os.makedirs(OUTPUT_DIR, exist_ok=True)
    
    for filename in os.listdir(INPUT_DIR):
        if filename.lower().endswith((".svg", ".xml")):
            in_path = os.path.join(INPUT_DIR, filename)
            name_wo_ext = os.path.splitext(filename)[0]
            out_path = os.path.join(OUTPUT_DIR, name_wo_ext + ".dxf")

            print(f"Konvertiere: {filename} → {out_path}")
            subprocess.run([
                INKSCAPE,
                in_path,
                "--export-type=dxf",
                f"--export-filename={out_path}"
            ], check=True)
