(arch_config_handler: ArchConfigHandler | None = None)
| 202 | |
| 203 | |
| 204 | def main(arch_config_handler: ArchConfigHandler | None = None) -> None: |
| 205 | if arch_config_handler is None: |
| 206 | arch_config_handler = ArchConfigHandler() |
| 207 | |
| 208 | mirror_list_handler = MirrorListHandler( |
| 209 | offline=arch_config_handler.args.offline, |
| 210 | verbose=arch_config_handler.args.verbose, |
| 211 | ) |
| 212 | |
| 213 | if not arch_config_handler.args.silent: |
| 214 | show_menu(arch_config_handler, mirror_list_handler) |
| 215 | |
| 216 | arch_config_handler.config.write_debug() |
| 217 | arch_config_handler.config.save() |
| 218 | |
| 219 | # Safety net for silent/config-file flow. The TUI menu blocks Install via |
| 220 | # GlobalMenu._validate_bootloader() before reaching this point. |
| 221 | if failure := validate_bootloader_layout( |
| 222 | arch_config_handler.config.bootloader_config, |
| 223 | arch_config_handler.config.disk_config, |
| 224 | ): |
| 225 | error(failure.description) |
| 226 | return |
| 227 | |
| 228 | if arch_config_handler.args.dry_run: |
| 229 | return |
| 230 | |
| 231 | if not arch_config_handler.args.silent: |
| 232 | aborted = False |
| 233 | res: bool = tui.run(lambda: confirm_config(arch_config_handler.config)) |
| 234 | |
| 235 | if not res: |
| 236 | debug('Installation aborted') |
| 237 | aborted = True |
| 238 | |
| 239 | if aborted: |
| 240 | return main(arch_config_handler) |
| 241 | |
| 242 | if arch_config_handler.config.disk_config: |
| 243 | fs_handler = FilesystemHandler(arch_config_handler.config.disk_config) |
| 244 | |
| 245 | if not delayed_warning(tr('Starting device modifications in ')): |
| 246 | return main() |
| 247 | |
| 248 | fs_handler.perform_filesystem_operations() |
| 249 | |
| 250 | perform_installation( |
| 251 | arch_config_handler, |
| 252 | mirror_list_handler, |
| 253 | AuthenticationHandler(), |
| 254 | ApplicationHandler(), |
| 255 | ) |
| 256 | |
| 257 | |
| 258 | if __name__ == '__main__': |
no test coverage detected