import sys

#!/usr/bin/env python3

"""
BuildToOrder
@brief   Script de ejemplo para realizar una configuracion del sistema operativo antes de generar imagen o de restaurado.
@brief   Activa el uso de los contralodres de disco más usados en windows 7.
@brief (puede  usarse como complemento para el programa de creación de imágenes o de restauración).
@param 1 disco  
@param 2 particion 
@return  
@TODO  
@exception 
@version 1.0.4 - Discos ide + SATA.
@date   2012-10-05
@version 1.1.1b - Funciona para Windows8 y Windows 10. Si la clave no existe (tiene valor vacío) se crea.
@date   2020-05-04
"""

def main():
    PROG = sys.argv[0]
    if len(sys.argv) != 3:
        ogRaiseError("OG_ERR_FORMAT", f"Formato: {PROG} ndisco nparticion")
    
    disk = sys.argv[1]
    partition = sys.argv[2]

    MNTDIR = ogMount(disk, partition)
    OSTYPE = ogGetOsType(disk, partition)

    if OSTYPE == "Windows":
        print("Filtro versión de sistema operativo windows.")
        TYPE = ogGetOsVersion(disk, partition)
        if "Windows XP" in TYPE:
            print("Versión de sistema operativo Windows XP no soportado")
            sys.exit()
        elif "Windows 7" in TYPE:
            KEYS = ["intelide", "pciide", "msahci", "iaStorV", "iaStor", "LSI_SAS"]
        elif "Windows 8" in TYPE or "Windows 10" in TYPE:
            KEYS = ["intelide", "pciide", "storahci", "iaStorV", "iaStorAC", "iaStorAVC", "LSI_SAS"]
        else:
            KEYS = []

        print(TYPE)
        CONTROLSET = ["ControlSet001", "ControlSet002"]
        for C in CONTROLSET:
            if ogListRegistryKeys(MNTDIR, "SYSTEM", f'\\{C}') == "":
                continue

            for K in KEYS:
                FULLK = f'\\{C}\\Services\\{K}\\Start'
                VALUE = ogGetRegistryValue(MNTDIR, "SYSTEM", FULLK)
                if VALUE == "":
                    ogDeleteRegistryValue(MNTDIR, "SYSTEM", FULLK)
                    ogAddRegistryValue(MNTDIR, "SYSTEM", FULLK, "DWORD")
                ogSetRegistryValue(MNTDIR, "SYSTEM", FULLK, '0')
                print(f" * {C} {K} enabled")
    elif OSTYPE == "Linux":
        print("Versión de Sistema Operativo GNU/Linux no soportado")
    else:
        print("Sistema Operativo no soportado")

if __name__ == "__main__":
    main()