Use same naming as omarchy-iso-configurator
This commit is contained in:
1 parent
c303a9f746
commit
341bb84093
1 file changed
Executable
+99
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
# Preview the shipped Omarchy installer dashboard without building an ISO.
|
||||
set -euo pipefail
|
||||
|
||||
simulate_install() {
|
||||
local state_file="$1"
|
||||
|
||||
python - "$state_file" <<'PY'
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
state_file = sys.argv[1]
|
||||
started_at = time.time()
|
||||
phases = [
|
||||
("Starting installation", 0.5),
|
||||
("Preparing live environment", 0.8),
|
||||
("Installing Arch + Omarchy", 5.0),
|
||||
("Configuring system", 1.2),
|
||||
("Finalizing Limine boot", 1.0),
|
||||
("Finalizing user", 1.0),
|
||||
("Configuring login", 0.6),
|
||||
("Validating boot setup", 0.8),
|
||||
]
|
||||
|
||||
|
||||
def write_state(current_phase, phase_started_at, finished_at=None):
|
||||
state = {
|
||||
"started_at": started_at,
|
||||
"phase_started_at": phase_started_at,
|
||||
"current_phase": current_phase,
|
||||
}
|
||||
if finished_at is not None:
|
||||
state["finished_at"] = finished_at
|
||||
|
||||
temporary = f"{state_file}.tmp"
|
||||
with open(temporary, "w") as output:
|
||||
json.dump(state, output)
|
||||
os.replace(temporary, state_file)
|
||||
|
||||
|
||||
for phase, duration in phases:
|
||||
phase_started_at = time.time()
|
||||
write_state(phase, phase_started_at)
|
||||
time.sleep(duration)
|
||||
|
||||
finished_at = time.time()
|
||||
write_state("Installation complete", finished_at, finished_at)
|
||||
time.sleep(0.3)
|
||||
PY
|
||||
}
|
||||
|
||||
if [[ ${1:-} == "--simulate-install" ]]; then
|
||||
(( $# == 2 )) || exit 2
|
||||
simulate_install "$2"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if (( $# > 0 )); then
|
||||
echo "Usage: $0" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
dashboard="$repo_root/configs/airootfs/usr/local/bin/omarchy-install-dashboard"
|
||||
|
||||
if [[ ! -x $dashboard ]]; then
|
||||
echo "Installer dashboard is not executable: $dashboard" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z ${OMARCHY_PATH:-} ]]; then
|
||||
for candidate in "$repo_root/../omarchy" /usr/share/omarchy; do
|
||||
if [[ -f $candidate/logo.txt ]]; then
|
||||
export OMARCHY_PATH="$candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -z ${OMARCHY_PATH:-} || ! -f $OMARCHY_PATH/logo.txt ]]; then
|
||||
echo "Unable to find Omarchy logo.txt; set OMARCHY_PATH to an Omarchy checkout." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
preview_dir="$(mktemp -d)"
|
||||
cleanup() {
|
||||
rm -rf "$preview_dir"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
log_file="$preview_dir/install.log"
|
||||
state_file="$preview_dir/state.json"
|
||||
touch "$log_file"
|
||||
|
||||
OMARCHY_UI_AUTO_REBOOT=no \
|
||||
"$dashboard" "$log_file" "$state_file" -- \
|
||||
"$0" --simulate-install "$state_file"
|
||||
Reference in new issue
Block a user