"""
installer.py - Build the Installer.

Copyright (c) EDCD, All Rights Reserved
Licensed under the GNU General Public License.
See LICENSE file.
"""
import os
import subprocess
from build import build


def run_inno_setup_installer(iss_path: str) -> None:
    """Run the Inno installer, building the installation exe."""
    # Get the path to the Inno Setup compiler (iscc.exe) (Currently set to default path)
    inno_setup_compiler_path: str = "C:\\Program Files (x86)\\Inno Setup 6\\ISCC.exe"

    # Check if the Inno Setup compiler executable exists
    if not os.path.isfile(inno_setup_compiler_path):
        print(f"Error: Inno Setup compiler not found at '{inno_setup_compiler_path}'.")
        return

    # Check if the provided .iss file exists
    if not os.path.isfile(iss_file_path):
        print(f"Error: The provided .iss file '{iss_path}' not found.")
        return

    # Run the Inno Setup compiler with the provided .iss file
    try:
        subprocess.run([inno_setup_compiler_path, iss_file_path], check=True)
    except subprocess.CalledProcessError as err:
        print(
            f"Error: Inno Setup compiler returned an error (exit code {err.returncode}):"
        )
        print(err.output.decode())
    except Exception as err:
        print(f"Error: An unexpected error occurred: {err}")


if __name__ == "__main__":
    build()
    # Add the ISS Template File
    iss_file_path: str = "./EDMC_Installer_Config.iss"
    # Build the ISS file
    run_inno_setup_installer(iss_file_path)