From d8e7635b9f8e2e55897d742e56598f7d3de0f585 Mon Sep 17 00:00:00 2001 From: Pepe44DEV Date: Wed, 27 May 2026 22:38:06 +0200 Subject: [PATCH] feat: paru auto-install + ASCII Header + Continue-Prompt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - paru wird jetzt in detect_environment() auf frischen Systemen installiert (vorher nur in preflight, das bei --fresh nie durchlief) - install_aur_helper() von preflight nach utils.sh verschoben (global verfügbar) - Header von Cherokee-Zeichen ('Ꮎ Ꮇ Ꭼ Ꮢ Ꮎ Ꮑ') auf ASCII ('O M E R O N') umgestellt — Cherokee zeigte auf manchen Terminals Fragezeichen - Continue with installation? Prompt nach Banner als erster interaktiver Schritt - basic mode header jetzt sauberes ASCII (===== statt Box-Zeichen) --- install.sh | 29 +++++++++++++++++++---------- lib/tui.sh | 9 +++------ lib/utils.sh | 32 ++++++++++++++++++++++++++++++++ modules/core/preflight.sh | 32 -------------------------------- 4 files changed, 54 insertions(+), 48 deletions(-) diff --git a/install.sh b/install.sh index 73d067c..272aa7b 100755 --- a/install.sh +++ b/install.sh @@ -99,7 +99,7 @@ detect_environment() { if ((!OMERON_HAS_GUM)) && have pacman; then printf '\033[1;36m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m\n' - printf '\033[1;36m Ꮎ Ꮇ Ꭼ Ꮢ Ꮎ Ꮑ — Modular System Setup Framework\033[0m\n' + printf '\033[1;36m O M E R O N — Modular System Setup Framework\033[0m\n' printf '\033[1;36m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m\n' printf '\n' printf ' \033[1;33mgum is not installed.\033[0m Installing it enables the full TUI experience.\n' @@ -125,8 +125,13 @@ detect_environment() { fi fi - if ((OMERON_FRESH_INSTALL)) && ((!OMERON_HAS_GUM)) && have pacman; then - tui_install_gum 2>/dev/null || true + if ((OMERON_FRESH_INSTALL)); then + if ((!OMERON_HAS_GUM)) && have pacman; then + tui_install_gum 2>/dev/null || true + fi + if ! have paru && ! have yay; then + install_aur_helper + fi fi } @@ -203,14 +208,10 @@ collect_all_interactive() { } show_banner() { - tui_header " Ꮎ Ꮇ Ꭼ Ꮢ Ꮎ Ꮑ " - tui_info "Modular System Setup Framework" - tui_info "Arch / Hyprland / CachyOS" + tui_header "O M E R O N — Modular System Setup" printf '\n' - if ((OMERON_FRESH_INSTALL)); then - tui_warn "FRESH INSTALL MODE" - tui_info "Will install Hyprland, GPU drivers, and all dependencies." + tui_info "Fresh install: Hyprland + GPU drivers + all dependencies" printf '\n' fi } @@ -230,6 +231,14 @@ main() { show_banner + tui_separator + printf '\n' + if ! tui_confirm "Continue with installation"; then + tui_info "Installation cancelled." + exit 0 + fi + printf '\n' + local modules_to_run=() if ((${#RUN_MODULES[@]})); then mapfile -t modules_to_run < <(collect_modules) @@ -268,7 +277,7 @@ main() { done printf '\n' - tui_header " Ꮎ Ꮇ Ꭼ Ꮢ Ꮎ Ꮑ " + tui_header "O M E R O N — Done" tui_success "Installation Complete!" printf '\n' tui_info "Log: ${OMERON_LOG_FILE}" diff --git a/lib/tui.sh b/lib/tui.sh index 59c5633..6e59406 100755 --- a/lib/tui.sh +++ b/lib/tui.sh @@ -187,20 +187,17 @@ tui_spin() { tui_header() { local title="$(_strip_format "$1")" - local len="${#title}" if [[ "$OMERON_TUI_MODE" == "gum" ]]; then gum style --foreground 212 --border-foreground 212 --border double --align center --width 60 --margin "1 2" --padding "1 2" "$title" else local width=50 - local pad=$(( (width - len) / 2 )) - [[ $pad -lt 2 ]] && pad=2 - local line - printf -v line '%*s' "$width" '' && line="${line// /═}" + printf -v line '%*s' "$width" '' && line="${line// /#}" + line="${line//#/=}" printf '\n' printf '\033[1;36m%s\033[0m\n' "$line" - printf '\033[1;36m║\033[0m%*s%s%*s\033[1;36m║\033[0m\n' $pad '' "$title" $((width - pad - len)) '' + printf '\033[1;36m %s\033[0m\n' "$title" printf '\033[1;36m%s\033[0m\n' "$line" printf '\n' fi diff --git a/lib/utils.sh b/lib/utils.sh index c38a8d5..85f80e1 100755 --- a/lib/utils.sh +++ b/lib/utils.sh @@ -261,3 +261,35 @@ system_summary() { └─────────────────────────────────────────────┘ SUMMARY } + +install_aur_helper() { + if have paru || have yay; then + return 0 + fi + + if ! command -v git >/dev/null 2>&1; then + sudo_run pacman -S --needed --noconfirm git base-devel + fi + + local build_dir + build_dir="$(mktemp -d)" + + sudo_run pacman -S --needed --noconfirm rustup 2>/dev/null || true + + if have rustup; then + rustup default stable >/dev/null 2>&1 || true + fi + + if git clone https://aur.archlinux.org/paru.git "$build_dir/paru" 2>/dev/null; then + (cd "$build_dir/paru" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || { + tui_warn "paru build failed, trying yay..." + if git clone https://aur.archlinux.org/yay.git "$build_dir/yay" 2>/dev/null; then + (cd "$build_dir/yay" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || { + tui_warn "yay build failed too. Install manually: paru -S paru-bin" + } + fi + } + fi + + rm -rf "$build_dir" +} diff --git a/modules/core/preflight.sh b/modules/core/preflight.sh index 447a83f..d043e59 100755 --- a/modules/core/preflight.sh +++ b/modules/core/preflight.sh @@ -54,7 +54,6 @@ module_main() { fi if ! have paru && ! have yay; then - tui_info "No AUR helper found. Installing paru..." install_aur_helper fi @@ -69,35 +68,4 @@ module_main() { fi } -install_aur_helper() { - if have paru || have yay; then - return 0 - fi - if ! command -v git >/dev/null 2>&1; then - sudo_run pacman -S --needed --noconfirm git base-devel - fi - - local build_dir - build_dir="$(mktemp -d)" - - tui_info "Building paru from AUR..." - sudo_run pacman -S --needed --noconfirm rustup 2>/dev/null || true - - if have rustup; then - rustup default stable >/dev/null 2>&1 || true - fi - - if git clone https://aur.archlinux.org/paru.git "$build_dir/paru" 2>/dev/null; then - (cd "$build_dir/paru" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || { - tui_warn "paru build failed, trying yay..." - if git clone https://aur.archlinux.org/yay.git "$build_dir/yay" 2>/dev/null; then - (cd "$build_dir/yay" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || { - tui_warn "yay build failed too. Install manually: paru -S paru-bin" - } - fi - } - fi - - rm -rf "$build_dir" -}