/
Setty
/
gentoo-installation
Обзор
Документация
Войти
/
Setty
/
gentoo-installation
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Source/Scripts/common.sh
54 строки
2 KB
Setty
Исправления
24 июн 2026, 07:34
24 июн 2026, 07:34
a0283d1
Код
Авторство
О чём код?
#!/bin/bash # Source/Scripts/common.sh — shared helpers. Sourced by the orchestrators. _COMMON_LOADED=1 # ---------- Colors ---------- if [[ -t 1 ]]; then C_RESET=$'\e[0m'; C_BOLD=$'\e[1m' C_BLUE=$'\e[34m'; C_GREEN=$'\e[32m'; C_YELLOW=$'\e[33m'; C_RED=$'\e[31m'; C_CYAN=$'\e[36m' else C_RESET=; C_BOLD=; C_BLUE=; C_GREEN=; C_YELLOW=; C_RED=; C_CYAN= fi # ---------- Logging ---------- STEP=0 step() { STEP=$((STEP+1)); printf '\n%s%s==> [%02d] %s%s\n' "$C_BOLD" "$C_BLUE" "$STEP" "$*" "$C_RESET"; } info() { printf ' %s•%s %s\n' "$C_CYAN" "$C_RESET" "$*"; } ok() { printf ' %s✓%s %s\n' "$C_GREEN" "$C_RESET" "$*"; } warn() { printf ' %s!%s %s\n' "$C_YELLOW" "$C_RESET" "$*"; } die() { printf '\n%s%s✗ ERROR:%s %s\n' "$C_BOLD" "$C_RED" "$C_RESET" "$*" >&2; exit 1; } enable_errtrap() { trap 'die "line $LINENO failed."' ERR; } # Guard for stage fragments: they must be sourced via an orchestrator. need_common() { [[ -n "${_COMMON_LOADED:-}" ]] || { echo "Run via Source/01-prechroot.sh or Source/02-chroot.sh" >&2; exit 1; } } # ---------- Helpers ---------- # Partition device naming: nvme/mmcblk use pN, sata uses N. Needs $DISK. part() { if [[ "$DISK" =~ (nvme|mmcblk|loop) ]]; then echo "${DISK}p${1}"; else echo "${DISK}${1}"; fi } # emerge with --autounmask-write; if it writes changes, apply and retry once. emerge_aw() { set +e emerge --verbose --autounmask-write "$@" local rc=$? set -e if [[ $rc -ne 0 ]]; then warn "emerge wrote autounmask changes or failed (code $rc). Applying and retrying..." etc-update --automode -5 >/dev/null 2>&1 || true # non-interactive: accept new emerge --verbose "$@" fi } # Load a config file by full path. load_config() { local conf="$1" [[ -f "$conf" ]] || die "Config not found: $conf" # shellcheck disable=SC1090 source "$conf" }