arguments.py: Rework into object oriented

This commit is contained in:
Mykola Grymalyuk
2023-02-09 16:27:18 -07:00
parent d305515c28
commit 3aadfe6002
+166 -96
View File
@@ -9,108 +9,178 @@ import logging
# Generic building args # Generic building args
class arguments: class arguments:
def __init__(self): def __init__(self, constants):
self.args = utilities.check_cli_args() self.args = utilities.check_cli_args()
self.constants = constants
self._parse_arguments()
def _parse_arguments(self):
"""
Parses arguments passed to the patcher
"""
def parse_arguments(self, settings):
if self.args.validate: if self.args.validate:
validation.validate(settings) self._validation_handler()
elif self.args.build: return
if self.args.build:
self._build_handler()
return
if self.args.patch_sys_vol:
self._sys_patch_handler()
return
if self.args.unpatch_sys_vol:
self._sys_unpatch_handler()
return
if self.args.auto_patch:
self._sys_patch_auto_handler()
return
def _validation_handler(self):
"""
Enter validation mode
"""
validation.PatcherValidation(self.constants)
def _sys_patch_handler(self):
"""
Start root volume patching
"""
logging.info("- Set System Volume patching")
if "Library/InstallerSandboxes/" in str(self.constants.payload_path):
logging.info("- Running from Installer Sandbox")
thread = threading.Thread(target=sys_patch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants, None).start_patch)
thread.start()
while thread.is_alive():
utilities.block_os_updaters()
time.sleep(1)
else:
sys_patch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants, None).start_patch()
def _sys_unpatch_handler(self):
"""
Start root volume unpatching
"""
logging.info("- Set System Volume unpatching")
sys_patch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants, None).start_unpatch()
def _sys_patch_auto_handler(self):
"""
Start root volume auto patching
"""
logging.info("- Set Auto patching")
sys_patch_auto.AutomaticSysPatch(self.constants).start_auto_patch()
def _build_handler(self):
"""
Start config building process
"""
if self.args.model:
if self.args.model: if self.args.model:
if self.args.model: logging.info(f"- Using custom model: {self.args.model}")
logging.info(f"- Using custom model: {self.args.model}") self.constants.custom_model = self.args.model
settings.custom_model = self.args.model defaults.generate_defaults(self.constants.custom_model, False, self.constants)
defaults.generate_defaults(settings.custom_model, False, settings) elif self.constants.computer.real_model not in model_array.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
elif settings.computer.real_model not in model_array.SupportedSMBIOS and settings.allow_oc_everywhere is False: logging.info(
logging.info( """Your model is not supported by this patcher for running unsupported OSes!"
"""Your model is not supported by this patcher for running unsupported OSes!"
If you plan to create the USB for another machine, please select the "Change Model" option in the menu.""" If you plan to create the USB for another machine, please select the "Change Model" option in the menu."""
) )
sys.exit(1) sys.exit(1)
else: else:
logging.info(f"- Using detected model: {settings.computer.real_model}") logging.info(f"- Using detected model: {self.constants.computer.real_model}")
defaults.generate_defaults(settings.custom_model, True, settings) defaults.generate_defaults(self.constants.custom_model, True, self.constants)
if self.args.disk: if self.args.disk:
logging.info(f"- Install Disk set: {self.args.disk}") logging.info(f"- Install Disk set: {self.args.disk}")
settings.disk = self.args.disk self.constants.disk = self.args.disk
if self.args.verbose:
logging.info("- Set verbose configuration")
settings.verbose_debug = True
else:
settings.verbose_debug = False # Override Defaults detected
if self.args.debug_oc:
logging.info("- Set OpenCore DEBUG configuration")
settings.opencore_debug = True
settings.opencore_build = "DEBUG"
if self.args.debug_kext:
logging.info("- Set kext DEBUG configuration")
settings.kext_debug = True
if self.args.hide_picker:
logging.info("- Set HidePicker configuration")
settings.showpicker = False
if self.args.disable_sip:
logging.info("- Set Disable SIP configuration")
settings.sip_status = False
else:
settings.sip_status = True # Override Defaults detected
if self.args.disable_smb:
logging.info("- Set Disable SecureBootModel configuration")
settings.secure_status = False
else:
settings.secure_status = True # Override Defaults detected
if self.args.vault:
logging.info("- Set Vault configuration")
settings.vault = True
if self.args.firewire:
logging.info("- Set FireWire Boot configuration")
settings.firewire_boot = True
if self.args.nvme:
logging.info("- Set NVMe Boot configuration")
settings.nvme_boot = True
if self.args.wlan:
logging.info("- Set Wake on WLAN configuration")
settings.enable_wake_on_wlan = True
if self.args.disable_tb:
logging.info("- Set Disable Thunderbolt configuration")
settings.disable_tb = True
if self.args.force_surplus:
logging.info("- Forcing SurPlus override configuration")
settings.force_surplus = True
if self.args.moderate_smbios:
logging.info("- Set Moderate SMBIOS Patching configuration")
settings.serial_settings = "Moderate"
if self.args.smbios_spoof:
if self.args.smbios_spoof == "Minimal":
settings.serial_settings = "Minimal"
elif self.args.smbios_spoof == "Moderate":
settings.serial_settings = "Moderate"
elif self.args.smbios_spoof == "Advanced":
settings.serial_settings = "Advanced"
else:
logging.info(f"- Unknown SMBIOS arg passed: {self.args.smbios_spoof}")
if self.args.support_all: if self.args.verbose:
logging.info("- Building for natively supported model") logging.info("- Set verbose configuration")
settings.allow_oc_everywhere = True self.constants.verbose_debug = True
settings.serial_settings = "None" else:
build.build_opencore(settings.custom_model or settings.computer.real_model, settings).build_opencore() self.constants.verbose_debug = False # Override Defaults detected
elif self.args.patch_sys_vol:
logging.info("- Set System Volume patching")
if "Library/InstallerSandboxes/" in str(settings.payload_path): if self.args.debug_oc:
logging.info("- Running from Installer Sandbox") logging.info("- Set OpenCore DEBUG configuration")
thread = threading.Thread(target=sys_patch.PatchSysVolume(settings.custom_model or settings.computer.real_model, settings, None).start_patch) self.constants.opencore_debug = True
thread.start() self.constants.opencore_build = "DEBUG"
while thread.is_alive():
utilities.block_os_updaters() if self.args.debug_kext:
time.sleep(1) logging.info("- Set kext DEBUG configuration")
self.constants.kext_debug = True
if self.args.hide_picker:
logging.info("- Set HidePicker configuration")
self.constants.showpicker = False
if self.args.disable_sip:
logging.info("- Set Disable SIP configuration")
self.constants.sip_status = False
else:
self.constants.sip_status = True # Override Defaults detected
if self.args.disable_smb:
logging.info("- Set Disable SecureBootModel configuration")
self.constants.secure_status = False
else:
self.constants.secure_status = True # Override Defaults detected
if self.args.vault:
logging.info("- Set Vault configuration")
self.constants.vault = True
if self.args.firewire:
logging.info("- Set FireWire Boot configuration")
self.constants.firewire_boot = True
if self.args.nvme:
logging.info("- Set NVMe Boot configuration")
self.constants.nvme_boot = True
if self.args.wlan:
logging.info("- Set Wake on WLAN configuration")
self.constants.enable_wake_on_wlan = True
if self.args.disable_tb:
logging.info("- Set Disable Thunderbolt configuration")
self.constants.disable_tb = True
if self.args.force_surplus:
logging.info("- Forcing SurPlus override configuration")
self.constants.force_surplus = True
if self.args.moderate_smbios:
logging.info("- Set Moderate SMBIOS Patching configuration")
self.constants.serial_settings = "Moderate"
if self.args.smbios_spoof:
if self.args.smbios_spoof == "Minimal":
self.constants.serial_settings = "Minimal"
elif self.args.smbios_spoof == "Moderate":
self.constants.serial_settings = "Moderate"
elif self.args.smbios_spoof == "Advanced":
self.constants.serial_settings = "Advanced"
else: else:
sys_patch.PatchSysVolume(settings.custom_model or settings.computer.real_model, settings, None).start_patch() logging.info(f"- Unknown SMBIOS arg passed: {self.args.smbios_spoof}")
elif self.args.unpatch_sys_vol:
logging.info("- Set System Volume unpatching") if self.args.support_all:
sys_patch.PatchSysVolume(settings.custom_model or settings.computer.real_model, settings, None).start_unpatch() logging.info("- Building for natively supported model")
elif self.args.auto_patch: self.constants.allow_oc_everywhere = True
logging.info("- Set Auto patching") self.constants.serial_settings = "None"
sys_patch_auto.AutomaticSysPatch(settings).start_auto_patch()
build.build_opencore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()