Refactor: Extract banner template to shared banner.sh
- Create rpi/banner.sh with print_banner, print_gradient_line, print_logo, print_starfield, print_complete_banner functions - Update setup.sh to source banner.sh (with inline fallback for curl) - Update first-boot-wizard.sh to use banner functions - Update sanitize-for-image.sh to use banner functions - Fix MOTD thermometer spacing alignment Single source of truth for ASCII banner styling. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
63
rpi/banner.sh
Normal file
63
rpi/banner.sh
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Stegasoo Banner/Header Template
|
||||||
|
# Source this file to use the banner functions
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# source "$(dirname "${BASH_SOURCE[0]}")/banner.sh"
|
||||||
|
# print_banner "Raspberry Pi Setup"
|
||||||
|
# print_gradient_line
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
STEGASOO_GOLD='\033[38;5;220m'
|
||||||
|
STEGASOO_GRAY='\033[0;90m'
|
||||||
|
STEGASOO_WHITE='\033[1;37m'
|
||||||
|
STEGASOO_GREEN='\033[0;32m'
|
||||||
|
STEGASOO_NC='\033[0m'
|
||||||
|
|
||||||
|
# Gradient line (purple -> blue)
|
||||||
|
print_gradient_line() {
|
||||||
|
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Starfield decoration line
|
||||||
|
print_starfield() {
|
||||||
|
echo -e "${STEGASOO_GRAY} · . · . * · . * · . * · . * · . * · . ·${STEGASOO_NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ASCII logo (gold)
|
||||||
|
print_logo() {
|
||||||
|
echo -e "${STEGASOO_GOLD} ___ _____ ___ ___ _ ___ ___ ___${STEGASOO_NC}"
|
||||||
|
echo -e "${STEGASOO_GOLD} / __||_ _|| __| / __| /_\\ / __| / _ \\ / _ \\\\${STEGASOO_NC}"
|
||||||
|
echo -e "${STEGASOO_GOLD} \\__ \\ | | | _| | (_ | / _ \\ \\__ \\ | (_) || (_) |${STEGASOO_NC}"
|
||||||
|
echo -e "${STEGASOO_GOLD} |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/${STEGASOO_NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Full banner with optional subtitle
|
||||||
|
# Usage: print_banner "Subtitle Text"
|
||||||
|
print_banner() {
|
||||||
|
local subtitle="$1"
|
||||||
|
echo ""
|
||||||
|
print_gradient_line
|
||||||
|
print_starfield
|
||||||
|
print_logo
|
||||||
|
print_starfield
|
||||||
|
print_gradient_line
|
||||||
|
if [ -n "$subtitle" ]; then
|
||||||
|
echo -e "${STEGASOO_WHITE} ${subtitle}${STEGASOO_NC}"
|
||||||
|
print_gradient_line
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion banner (green title)
|
||||||
|
# Usage: print_complete_banner "Setup Complete!"
|
||||||
|
print_complete_banner() {
|
||||||
|
local title="$1"
|
||||||
|
echo ""
|
||||||
|
print_gradient_line
|
||||||
|
print_starfield
|
||||||
|
print_logo
|
||||||
|
print_starfield
|
||||||
|
print_gradient_line
|
||||||
|
echo -e "\033[1;32m ${title}\033[0m"
|
||||||
|
print_gradient_line
|
||||||
|
}
|
||||||
@@ -14,6 +14,10 @@
|
|||||||
INSTALL_DIR="/opt/stegasoo"
|
INSTALL_DIR="/opt/stegasoo"
|
||||||
FLAG_FILE="/etc/stegasoo-first-boot"
|
FLAG_FILE="/etc/stegasoo-first-boot"
|
||||||
PROFILE_HOOK="/etc/profile.d/stegasoo-wizard.sh"
|
PROFILE_HOOK="/etc/profile.d/stegasoo-wizard.sh"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Source banner functions
|
||||||
|
source "$SCRIPT_DIR/banner.sh"
|
||||||
|
|
||||||
# Check if this is first boot
|
# Check if this is first boot
|
||||||
if [ ! -f "$FLAG_FILE" ]; then
|
if [ ! -f "$FLAG_FILE" ]; then
|
||||||
@@ -39,18 +43,7 @@ clear
|
|||||||
# Welcome
|
# Welcome
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
echo ""
|
print_banner "First Boot Wizard"
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
|
||||||
echo -e "\033[38;5;220m ___ _____ ___ ___ _ ___ ___ ___\033[0m"
|
|
||||||
echo -e "\033[38;5;220m / __||_ _|| __| / __| /_\\ / __| / _ \\ / _ \\\\\033[0m"
|
|
||||||
echo -e "\033[38;5;220m \\__ \\ | | | _| | (_ | / _ \\ \\__ \\ | (_) || (_) |\033[0m"
|
|
||||||
echo -e "\033[38;5;220m |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/\033[0m"
|
|
||||||
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "\033[1;37m First Boot Wizard\033[0m"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
gum style --foreground 245 "This wizard will help you configure your Stegasoo server"
|
gum style --foreground 245 "This wizard will help you configure your Stegasoo server"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -409,18 +402,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
print_complete_banner "Setup Complete!"
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
|
||||||
echo -e "\033[38;5;220m ___ _____ ___ ___ _ ___ ___ ___\033[0m"
|
|
||||||
echo -e "\033[38;5;220m / __||_ _|| __| / __| /_\\ / __| / _ \\ / _ \\\\\033[0m"
|
|
||||||
echo -e "\033[38;5;220m \\__ \\ | | | _| | (_ | / _ \\ \\__ \\ | (_) || (_) |\033[0m"
|
|
||||||
echo -e "\033[38;5;220m |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/\033[0m"
|
|
||||||
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "\033[1;32m Setup Complete!\033[0m"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
gum style --foreground 82 --bold "Create your admin account:"
|
gum style --foreground 82 --bold "Create your admin account:"
|
||||||
gum style --foreground 226 " $ACCESS_URL_LOCAL"
|
gum style --foreground 226 " $ACCESS_URL_LOCAL"
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ GRAY='\033[0;90m'
|
|||||||
BOLD='\033[1m'
|
BOLD='\033[1m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# Source banner functions
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/banner.sh"
|
||||||
|
|
||||||
# Show help
|
# Show help
|
||||||
show_help() {
|
show_help() {
|
||||||
echo "Stegasoo Sanitize Script - Prepare Pi for SD Card Imaging"
|
echo "Stegasoo Sanitize Script - Prepare Pi for SD Card Imaging"
|
||||||
@@ -70,21 +74,11 @@ if [ "$EUID" -ne 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
clear
|
clear
|
||||||
echo ""
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "${GRAY} · . · . * · . * · . * · . * · . * · . ·${NC}"
|
|
||||||
echo -e "\033[38;5;220m ___ _____ ___ ___ _ ___ ___ ___\033[0m"
|
|
||||||
echo -e "\033[38;5;220m / __||_ _|| __| / __| /_\\\\ / __| / _ \\\\ / _ \\\\\033[0m"
|
|
||||||
echo -e "\033[38;5;220m \\\\__ \\\\ | | | _| | (_ | / _ \\\\ \\\\__ \\\\ | (_) || (_) |\033[0m"
|
|
||||||
echo -e "\033[38;5;220m |___/ |_| |___| \\___|/_/ \\_\\\\|___/ \\\\___/ \\\\___/\033[0m"
|
|
||||||
echo -e "${GRAY} · . · . * · . * · . * · . * · . * · . ·${NC}"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
if [ "$SOFT_RESET" = true ]; then
|
if [ "$SOFT_RESET" = true ]; then
|
||||||
echo -e "\033[1;37m Soft Reset (Factory)\033[0m"
|
print_banner "Soft Reset (Factory)"
|
||||||
else
|
else
|
||||||
echo -e "\033[1;37m Sanitize for Imaging\033[0m"
|
print_banner "Sanitize for Imaging"
|
||||||
fi
|
fi
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ "$SOFT_RESET" = true ]; then
|
if [ "$SOFT_RESET" = true ]; then
|
||||||
|
|||||||
48
rpi/setup.sh
48
rpi/setup.sh
@@ -29,6 +29,33 @@ GRAY='\033[0;90m'
|
|||||||
BOLD='\033[1m'
|
BOLD='\033[1m'
|
||||||
NC='\033[0m' # No Color
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Source banner.sh if available (for local runs), otherwise define inline
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)"
|
||||||
|
if [ -f "$SCRIPT_DIR/banner.sh" ]; then
|
||||||
|
source "$SCRIPT_DIR/banner.sh"
|
||||||
|
else
|
||||||
|
# Inline banner functions for curl-pipe execution
|
||||||
|
print_gradient_line() {
|
||||||
|
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
||||||
|
}
|
||||||
|
print_banner() {
|
||||||
|
local subtitle="$1"
|
||||||
|
echo ""
|
||||||
|
print_gradient_line
|
||||||
|
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
||||||
|
echo -e "\033[38;5;220m ___ _____ ___ ___ _ ___ ___ ___\033[0m"
|
||||||
|
echo -e "\033[38;5;220m / __||_ _|| __| / __| /_\\ / __| / _ \\ / _ \\\\\033[0m"
|
||||||
|
echo -e "\033[38;5;220m \\__ \\ | | | _| | (_ | / _ \\ \\__ \\ | (_) || (_) |\033[0m"
|
||||||
|
echo -e "\033[38;5;220m |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/\033[0m"
|
||||||
|
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
||||||
|
print_gradient_line
|
||||||
|
if [ -n "$subtitle" ]; then
|
||||||
|
echo -e "\033[1;37m ${subtitle}\033[0m"
|
||||||
|
print_gradient_line
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
# Show help
|
# Show help
|
||||||
show_help() {
|
show_help() {
|
||||||
echo "Stegasoo Raspberry Pi Setup Script"
|
echo "Stegasoo Raspberry Pi Setup Script"
|
||||||
@@ -82,17 +109,7 @@ for config_file in "/etc/stegasoo.conf" "$HOME/.config/stegasoo/stegasoo.conf";
|
|||||||
done
|
done
|
||||||
|
|
||||||
clear
|
clear
|
||||||
echo ""
|
print_banner "Raspberry Pi Setup"
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "${GRAY} · . · . * · . * · . * · . * · . * · . ·${NC}"
|
|
||||||
echo -e "\033[38;5;220m ___ _____ ___ ___ _ ___ ___ ___\033[0m"
|
|
||||||
echo -e "\033[38;5;220m / __||_ _|| __| / __| /_\\\\ / __| / _ \\\\ / _ \\\\\033[0m"
|
|
||||||
echo -e "\033[38;5;220m \\\\__ \\\\ | | | _| | (_ | / _ \\\\ \\\\__ \\\\ | (_) || (_) |\033[0m"
|
|
||||||
echo -e "\033[38;5;220m |___/ |_| |___| \\___|/_/ \\_\\\\|___/ \\\\___/ \\\\___/\033[0m"
|
|
||||||
echo -e "${GRAY} · . · . * · . * · . * · . * · . * · . ·${NC}"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo -e "\033[1;37m Raspberry Pi Setup\033[0m"
|
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo " This will install Stegasoo with full DCT support"
|
echo " This will install Stegasoo with full DCT support"
|
||||||
echo " Estimated time: ~2 minutes (pre-built) or 15-20 min (from source)"
|
echo " Estimated time: ~2 minutes (pre-built) or 15-20 min (from source)"
|
||||||
@@ -424,19 +441,22 @@ if systemctl is-active --quiet stegasoo 2>/dev/null; then
|
|||||||
echo -e "\033[38;5;220m |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/\033[0m"
|
echo -e "\033[38;5;220m |___/ |_| |___| \\___//_/ \\_\\|___/ \\___/ \\___/\033[0m"
|
||||||
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
echo -e "\033[0;90m · . · . * · . * · . * · . * · . * · . ·\033[0m"
|
||||||
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
||||||
echo -e " \033[0;32m●\033[0m Stegasoo is running"
|
|
||||||
echo -e " \033[0;33m$STEGASOO_URL\033[0m"
|
|
||||||
# Show CPU stats if overclocked (read configured freq, not current idle freq)
|
# Show CPU stats if overclocked (read configured freq, not current idle freq)
|
||||||
CONFIG_FILE=""
|
CONFIG_FILE=""
|
||||||
if [ -f /boot/firmware/config.txt ]; then CONFIG_FILE="/boot/firmware/config.txt"
|
if [ -f /boot/firmware/config.txt ]; then CONFIG_FILE="/boot/firmware/config.txt"
|
||||||
elif [ -f /boot/config.txt ]; then CONFIG_FILE="/boot/config.txt"; fi
|
elif [ -f /boot/config.txt ]; then CONFIG_FILE="/boot/config.txt"; fi
|
||||||
|
CPU_MHZ=""
|
||||||
|
CPU_TEMP=""
|
||||||
if [ -n "$CONFIG_FILE" ] && grep -qE "^arm_freq=" "$CONFIG_FILE" 2>/dev/null; then
|
if [ -n "$CONFIG_FILE" ] && grep -qE "^arm_freq=" "$CONFIG_FILE" 2>/dev/null; then
|
||||||
CPU_MHZ=$(grep "^arm_freq=" "$CONFIG_FILE" | cut -d= -f2)
|
CPU_MHZ=$(grep "^arm_freq=" "$CONFIG_FILE" | cut -d= -f2)
|
||||||
CPU_TEMP=$(vcgencmd measure_temp 2>/dev/null | cut -d= -f2)
|
CPU_TEMP=$(vcgencmd measure_temp 2>/dev/null | cut -d= -f2)
|
||||||
|
fi
|
||||||
|
# Compact two-column layout
|
||||||
|
echo -e " \033[0;32m●\033[0m Stegasoo running \033[0;32m●\033[0m \033[0;33m$STEGASOO_URL\033[0m"
|
||||||
if [ -n "$CPU_MHZ" ] && [ -n "$CPU_TEMP" ]; then
|
if [ -n "$CPU_MHZ" ] && [ -n "$CPU_TEMP" ]; then
|
||||||
echo -e " \033[0;35m⚡\033[0m ${CPU_MHZ} MHz \033[0;35m🌡\033[0m ${CPU_TEMP}"
|
echo -e " \033[0;35m⚡\033[0m ${CPU_MHZ} MHz \033[0;35m🌡\033[0m ${CPU_TEMP}"
|
||||||
fi
|
fi
|
||||||
fi
|
echo -e "\033[38;5;93m══════════════\033[38;5;99m══════════════\033[38;5;105m══════════════\033[38;5;117m══════════════\033[0m"
|
||||||
echo ""
|
echo ""
|
||||||
else
|
else
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user