#!/usr/bin/env bash # Created by John A. Hoeven with the ethical assistance of Claude AI # --------------------------------------------------------------------------- # ce-install.sh # ~/projects/ceos/alpine-installer/ce-install.sh # Version: v0.0.1 | Status: DEVELOPMENT # Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480) # --------------------------------------------------------------------------- # Top-level orchestrator. Runs Tier 0 → 1 → 2 in sequence. # Stops if any tier exits non-zero. One confirmation prompt for all tiers. # --------------------------------------------------------------------------- SCRIPT_NAME="ce-install" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/lib/ce-common.sh" \ || { echo "ERROR: lib/ce-common.sh not found"; exit 1; } check_not_root TIERS_COMPLETED=() TIERS_FAILED=() print_final_summary() { log_info "=== FULL INSTALL SUMMARY ===" log_info "Completed: ${TIERS_COMPLETED[*]:-none}" if [[ ${#TIERS_FAILED[@]} -gt 0 ]]; then log_warn "Failed: ${TIERS_FAILED[*]}" fi log_info "Full log: ${LOG_FILE}" log_info "Per-tier logs: ${LOG_DIR}/ce-base-*.log, ce-minimal-*.log, ce-basic-*.log" } run_tier() { local name="${1}" script="${2}" log_info "--- Starting ${name} ---" if CE_INSTALL_NO_CONFIRM=1 bash "${script}"; then TIERS_COMPLETED+=("${name}") log_info "--- ${name} complete ---" else TIERS_FAILED+=("${name}") log_error "--- ${name} FAILED — stopping ---" print_final_summary exit 1 fi } log_info "=== CE OS INSTALLER — FULL STACK ===" log_info "Arch: ${ARCH} | Log: ${LOG_FILE}" log_info "" log_info " Tier 0 — Base : prerequisites, SSH, doas" log_info " Tier 1 — Minimal : full TUI workstation" log_info " Tier 2 — Basic : daily-use additions + GUI" log_info "" confirm_proceed run_tier "Tier 0 — Base" "${SCRIPT_DIR}/ce-base.sh" run_tier "Tier 1 — Minimal" "${SCRIPT_DIR}/ce-minimal.sh" run_tier "Tier 2 — Basic" "${SCRIPT_DIR}/ce-basic.sh" print_final_summary log_info "=== INSTALL COMPLETE ==="