ceos-alpine-installer/bootstrap.sh
John A. Hoeven 7488bb2199 Fix repo org: giovannino → ceos
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 01:39:02 +02:00

93 lines
2.9 KiB
Bash

#!/usr/bin/env bash
# Created by John A. Hoeven with the ethical assistance of Claude AI
# ---------------------------------------------------------------------------
# bootstrap.sh
# Served at: http://192.168.0.138/scripts/alpine-ceos-installer/bootstrap.sh
# Version: v0.0.1 | Status: DEVELOPMENT
# Target: Alpine Linux x86-64 (tinkerpad / ThinkPad T480)
# ---------------------------------------------------------------------------
# Run this on tinkerpad to download the full CE OS installer from workbench.
# Usage: wget http://192.168.0.138/scripts/alpine-ceos-installer/bootstrap.sh
# bash bootstrap.sh
#
# TODO — Forgejo: replace the wget block below with these three lines and delete the rest of this file:
# doas apk add git
# git clone -b dev https://git.jhoeven.net/ceos/ceos-alpine-installer.git
# cd ceos-alpine-installer && bash ce-install.sh
# ---------------------------------------------------------------------------
BASE="http://192.168.0.138/scripts/alpine-ceos-installer"
DEST="/tmp/ceos-installer-$(date +%Y%m%d%H%M%S)"
echo "CE OS Alpine Installer — Bootstrap"
echo "==================================="
echo "Source: ${BASE}"
echo "Dest: ${DEST}"
echo ""
if ! command -v bash > /dev/null 2>&1; then
echo "Installing bash..."
doas apk add bash || { echo "ERROR: could not install bash"; exit 1; }
fi
mkdir -p \
"${DEST}/lib/base" \
"${DEST}/lib/minimal" \
"${DEST}/lib/basic" \
"${DEST}/tests"
fetch() {
local path="${1}"
if wget -q -O "${DEST}/${path}" "${BASE}/${path}"; then
echo " OK ${path}"
else
echo " ERR ${path}" >&2
echo "Bootstrap failed: could not fetch ${path}" >&2
exit 1
fi
}
echo "Fetching orchestrators..."
fetch "ce-install.sh"
fetch "ce-base.sh"
fetch "ce-minimal.sh"
fetch "ce-basic.sh"
echo "Fetching library..."
fetch "lib/ce-common.sh"
fetch "lib/base/01_core.sh"
fetch "lib/base/02_doas.sh"
echo "Fetching Tier 1 — Minimal..."
for n in 01_shell 02_terminal 03_files 04_vcs 05_systools \
06_comms 07_journal 08_web 09_network 10_record \
11_wiki 12_access; do
fetch "lib/minimal/${n}.sh"
done
echo "Fetching Tier 2 — Basic..."
for n in 01_comms 02_monitor 03_gui 04_media 05_fonts 06_utils; do
fetch "lib/basic/${n}.sh"
done
echo "Fetching tests..."
for t in test_base test_minimal test_basic; do
fetch "tests/${t}.sh"
done
find "${DEST}" -name "*.sh" -exec chmod +x {} \;
echo ""
echo "Bootstrap complete."
echo ""
echo "To install:"
echo " cd ${DEST}"
echo " bash ce-install.sh # full stack (Tier 0 + 1 + 2)"
echo " bash ce-base.sh # Tier 0 only"
echo " bash ce-minimal.sh # Tier 1 only (requires Tier 0)"
echo " bash ce-basic.sh # Tier 2 only (requires Tier 1)"
echo ""
echo "To run tests after install:"
echo " bash ${DEST}/tests/test_base.sh"
echo " bash ${DEST}/tests/test_minimal.sh"
echo " bash ${DEST}/tests/test_basic.sh"