Scaffold Python orchestrator + split install.sh / finalize.sh
Chunk 1 of the C3 refactor: replace the two-pass install model (archinstall CLI + custom shell dance + chroot bash installer) with a single Python orchestrator that owns phase ordering, using archinstall as a library subsystem. Splits the bash entry point into two: - install.sh: online entry point. Ensures omarchy runtime + base.packages are installed/up to date, then exec's finalize.sh. - finalize.sh: the in-target portion (preflight + packaging + config + login + post-install). Called by install.sh (online) AND by the orchestrator after arch-chroot -u $USER (offline). Adds the orchestrator skeleton under install/orchestrator/: - main.py: entry point, builds + runs the phase list - context.py: InstallContext (parsed configurator JSON + invocation paths) - phases.py: phase state machine (logging + state.json + error wrapping) - phases_impl.py: stubbed phase implementations (filled in by chunks 2-6) - archinstall_adapter.py: thin compat wall around archinstall lib imports (only this module imports from archinstall.*) - ui.py: gum subprocess wrappers so the orchestrator keeps the same styled-terminal UX as the bash installer Updates bin/omarchy-install to dispatch: - --config <json> in args → python -m orchestrator.main (ISO install) - anything else → bash install.sh (online rerun on installed system) Concrete phase logic lands in subsequent chunks. All phases currently raise NotImplementedError; the orchestrator imports cleanly and --help works as a smoke check.
This commit is contained in:
+21
-2
@@ -2,6 +2,25 @@
|
||||
|
||||
# omarchy:summary=Run the Omarchy installer (shipped via omarchy-installer)
|
||||
# omarchy:group=install
|
||||
# omarchy:args=[install.sh args]
|
||||
# omarchy:args=[--config <json> --creds <json> ...] | [install.sh args]
|
||||
|
||||
exec bash "$OMARCHY_PATH/install.sh" "$@"
|
||||
set -eEo pipefail
|
||||
|
||||
# Dispatcher:
|
||||
# --config <json> → Python orchestrator (ISO install)
|
||||
# anything else → bash install.sh (online rerun on an installed system)
|
||||
#
|
||||
# The Python orchestrator owns the ISO install end-to-end: partitioning,
|
||||
# pacstrap, bootloader, user creation, package install, and finally calling
|
||||
# finalize.sh inside the chroot. install.sh is the simpler online path:
|
||||
# ensures the omarchy runtime is up to date, then exec's finalize.sh.
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--config|--config=*)
|
||||
cd "${OMARCHY_PATH:-/usr/share/omarchy}/install"
|
||||
exec python -m orchestrator.main "$@"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exec bash "${OMARCHY_PATH:-/usr/share/omarchy}/install.sh" "$@"
|
||||
|
||||
Reference in New Issue
Block a user