13 KiB
13 KiB
core.func Usage Examples
Overview
This document provides practical usage examples for core.func functions, covering common scenarios, integration patterns, and best practices.
Basic Script Setup
Standard Script Initialization
#!/usr/bin/env bash
# Standard script setup using core.func
# Source core functions
source core.func
# Run system checks
pve_check
arch_check
shell_check
root_check
# Optional: Check SSH connection
ssh_check
# Set up error handling
trap 'stop_spinner' EXIT INT TERM
# Your script logic here
msg_info "Starting script execution"
# ... script code ...
msg_ok "Script completed successfully"
Minimal Script Setup
#!/usr/bin/env bash
# Minimal setup for simple scripts
source core.func
# Basic checks only
pve_check
root_check
# Simple execution
msg_info "Running operation"
# ... your code ...
msg_ok "Operation completed"
Message Display Examples
Progress Indication
#!/usr/bin/env bash
source core.func
# Show progress with spinner
msg_info "Downloading package..."
sleep 2
msg_ok "Download completed"
msg_info "Installing package..."
sleep 3
msg_ok "Installation completed"
msg_info "Configuring service..."
sleep 1
msg_ok "Configuration completed"
Error Handling
#!/usr/bin/env bash
source core.func
# Function with error handling
install_package() {
local package="$1"
msg_info "Installing $package..."
if silent apt-get install -y "$package"; then
msg_ok "$package installed successfully"
return 0
else
msg_error "Failed to install $package"
return 1
fi
}
# Usage
if install_package "nginx"; then
msg_ok "Nginx installation completed"
else
msg_error "Nginx installation failed"
exit 1
fi
Warning Messages
#!/usr/bin/env bash
source core.func
# Show warnings for potentially dangerous operations
msg_warn "This will modify system configuration"
read -p "Continue? [y/N]: " confirm
if [[ "$confirm" =~ ^[yY]$ ]]; then
msg_info "Proceeding with modification..."
# ... dangerous operation ...
msg_ok "Modification completed"
else
msg_info "Operation cancelled"
fi
Custom Messages
#!/usr/bin/env bash
source core.func
# Custom message with specific icon and color
msg_custom "🚀" "\e[32m" "Launching application"
msg_custom "⚡" "\e[33m" "High performance mode enabled"
msg_custom "🔒" "\e[31m" "Security mode activated"
Debug Messages
#!/usr/bin/env bash
source core.func
# Enable debug mode
export var_full_verbose=1
# Debug messages
msg_debug "Variable value: $some_variable"
msg_debug "Function called: $FUNCNAME"
msg_debug "Current directory: $(pwd)"
Silent Execution Examples
Package Management
#!/usr/bin/env bash
source core.func
# Update package lists
msg_info "Updating package lists..."
silent apt-get update
# Install packages
msg_info "Installing required packages..."
silent apt-get install -y curl wget git
# Upgrade packages
msg_info "Upgrading packages..."
silent apt-get upgrade -y
msg_ok "Package management completed"
File Operations
#!/usr/bin/env bash
source core.func
# Create directories
msg_info "Creating directory structure..."
silent mkdir -p /opt/myapp/{config,logs,data}
# Set permissions
msg_info "Setting permissions..."
silent chmod 755 /opt/myapp
silent chmod 644 /opt/myapp/config/*
# Copy files
msg_info "Copying configuration files..."
silent cp config/* /opt/myapp/config/
msg_ok "File operations completed"
Service Management
#!/usr/bin/env bash
source core.func
# Start service
msg_info "Starting service..."
silent systemctl start myservice
# Enable service
msg_info "Enabling service..."
silent systemctl enable myservice
# Check service status
msg_info "Checking service status..."
if silent systemctl is-active --quiet myservice; then
msg_ok "Service is running"
else
msg_error "Service failed to start"
fi
Network Operations
#!/usr/bin/env bash
source core.func
# Test network connectivity
msg_info "Testing network connectivity..."
if silent ping -c 1 8.8.8.8; then
msg_ok "Network connectivity confirmed"
else
msg_error "Network connectivity failed"
fi
# Download files
msg_info "Downloading configuration..."
silent curl -fsSL https://example.com/config -o /tmp/config
# Extract archives
msg_info "Extracting archive..."
silent tar -xzf /tmp/archive.tar.gz -C /opt/
System Check Examples
Comprehensive System Validation
#!/usr/bin/env bash
source core.func
# Complete system validation
validate_system() {
msg_info "Validating system requirements..."
# Check Proxmox version
if pve_check; then
msg_ok "Proxmox VE version is supported"
fi
# Check architecture
if arch_check; then
msg_ok "System architecture is supported"
fi
# Check shell
if shell_check; then
msg_ok "Shell environment is correct"
fi
# Check privileges
if root_check; then
msg_ok "Running with sufficient privileges"
fi
# Check SSH connection
ssh_check
msg_ok "System validation completed"
}
# Run validation
validate_system
Conditional System Checks
#!/usr/bin/env bash
source core.func
# Check if running in container
if [[ -f /.dockerenv ]] || [[ -f /run/.containerenv ]]; then
msg_warn "Running inside container"
# Skip some checks
else
# Full system checks
pve_check
arch_check
fi
# Always check shell and privileges
shell_check
root_check
Header Management Examples
Application Header Display
#!/usr/bin/env bash
source core.func
# Set application information
export APP="plex"
export APP_TYPE="ct"
# Display header
header_info
# Continue with application setup
msg_info "Setting up Plex Media Server..."
Custom Header Handling
#!/usr/bin/env bash
source core.func
# Get header content
export APP="nextcloud"
export APP_TYPE="ct"
header_content=$(get_header)
if [[ -n "$header_content" ]]; then
echo "Header found:"
echo "$header_content"
else
msg_warn "No header found for $APP"
fi
Swap Management Examples
Interactive Swap Creation
#!/usr/bin/env bash
source core.func
# Check and create swap
if check_or_create_swap; then
msg_ok "Swap is available"
else
msg_warn "No swap available - continuing without swap"
fi
Automated Swap Check
#!/usr/bin/env bash
source core.func
# Check swap without prompting
check_swap_quiet() {
if swapon --noheadings --show | grep -q 'swap'; then
msg_ok "Swap is active"
return 0
else
msg_warn "No active swap detected"
return 1
fi
}
if check_swap_quiet; then
msg_info "System has sufficient swap"
else
msg_warn "Consider adding swap for better performance"
fi
Spinner Usage Examples
Long-Running Operations
#!/usr/bin/env bash
source core.func
# Long-running operation with spinner
long_operation() {
msg_info "Processing large dataset..."
# Simulate long operation
for i in {1..100}; do
sleep 0.1
# Update spinner message periodically
if (( i % 20 == 0 )); then
SPINNER_MSG="Processing... $i%"
fi
done
msg_ok "Dataset processing completed"
}
long_operation
Background Operations
#!/usr/bin/env bash
source core.func
# Background operation with spinner
background_operation() {
msg_info "Starting background process..."
# Start spinner
SPINNER_MSG="Processing in background..."
spinner &
SPINNER_PID=$!
# Do background work
sleep 5
# Stop spinner
stop_spinner
msg_ok "Background process completed"
}
background_operation
Integration Examples
With build.func
#!/usr/bin/env bash
# Integration with build.func
source core.func
source build.func
# Use core functions for system validation
pve_check
arch_check
root_check
# Use build.func for container creation
export APP="plex"
export CTID="100"
# ... container creation ...
With tools.func
#!/usr/bin/env bash
# Integration with tools.func
source core.func
source tools.func
# Use core functions for UI
msg_info "Starting maintenance tasks..."
# Use tools.func for maintenance
update_system
cleanup_logs
optimize_storage
msg_ok "Maintenance completed"
With error_handler.func
#!/usr/bin/env bash
# Integration with error_handler.func
source core.func
source error_handler.func
# Use core functions for execution
msg_info "Running operation..."
# Silent execution will use error_handler for explanations
silent apt-get install -y package
msg_ok "Operation completed"
Best Practices Examples
Error Handling Pattern
#!/usr/bin/env bash
source core.func
# Robust error handling
run_with_error_handling() {
local operation="$1"
local description="$2"
msg_info "$description"
if silent "$operation"; then
msg_ok "$description completed successfully"
return 0
else
msg_error "$description failed"
return 1
fi
}
# Usage
run_with_error_handling "apt-get update" "Package list update"
run_with_error_handling "apt-get install -y nginx" "Nginx installation"
Verbose Mode Handling
#!/usr/bin/env bash
source core.func
# Handle verbose mode
if is_verbose_mode; then
msg_info "Verbose mode enabled - showing detailed output"
# Show more information
else
msg_info "Normal mode - showing minimal output"
# Show less information
fi
Alpine Linux Detection
#!/usr/bin/env bash
source core.func
# Handle different OS types
if is_alpine; then
msg_info "Detected Alpine Linux"
# Use Alpine-specific commands
silent apk add --no-cache package
else
msg_info "Detected Debian-based system"
# Use Debian-specific commands
silent apt-get install -y package
fi
Conditional Execution
#!/usr/bin/env bash
source core.func
# Conditional execution based on system state
if [[ -f /etc/nginx/nginx.conf ]]; then
msg_warn "Nginx configuration already exists"
read -p "Overwrite? [y/N]: " overwrite
if [[ "$overwrite" =~ ^[yY]$ ]]; then
msg_info "Overwriting configuration..."
# ... overwrite logic ...
else
msg_info "Skipping configuration"
fi
else
msg_info "Creating new Nginx configuration..."
# ... create logic ...
fi
Advanced Usage Examples
Custom Spinner Messages
#!/usr/bin/env bash
source core.func
# Custom spinner with progress
download_with_progress() {
local url="$1"
local file="$2"
msg_info "Starting download..."
# Start spinner
SPINNER_MSG="Downloading..."
spinner &
SPINNER_PID=$!
# Download with progress
curl -L "$url" -o "$file" --progress-bar
# Stop spinner
stop_spinner
msg_ok "Download completed"
}
download_with_progress "https://example.com/file.tar.gz" "/tmp/file.tar.gz"
Message Deduplication
#!/usr/bin/env bash
source core.func
# Messages are automatically deduplicated
for i in {1..5}; do
msg_info "Processing item $i"
# This message will only show once
done
# Different messages will show separately
msg_info "Starting phase 1"
msg_info "Starting phase 2"
msg_info "Starting phase 3"
Terminal Control
#!/usr/bin/env bash
source core.func
# Ensure terminal control is available
ensure_tput
# Use terminal control
clear_line
echo "This line will be cleared"
clear_line
echo "New content"
Troubleshooting Examples
Debug Mode
#!/usr/bin/env bash
source core.func
# Enable debug mode
export var_full_verbose=1
export VERBOSE="yes"
# Debug information
msg_debug "Script started"
msg_debug "Current user: $(whoami)"
msg_debug "Current directory: $(pwd)"
msg_debug "Environment variables: $(env | grep -E '^(APP|CTID|VERBOSE)')"
Silent Execution Debugging
#!/usr/bin/env bash
source core.func
# Debug silent execution
debug_silent() {
local cmd="$1"
local log_file="/tmp/debug.$$.log"
echo "Command: $cmd" > "$log_file"
echo "Timestamp: $(date)" >> "$log_file"
echo "Working directory: $(pwd)" >> "$log_file"
echo "Environment:" >> "$log_file"
env >> "$log_file"
echo "--- Command Output ---" >> "$log_file"
if silent "$cmd"; then
msg_ok "Command succeeded"
else
msg_error "Command failed - check $log_file for details"
fi
}
debug_silent "apt-get update"
Error Recovery
#!/usr/bin/env bash
source core.func
# Error recovery pattern
retry_operation() {
local max_attempts=3
local attempt=1
while [[ $attempt -le $max_attempts ]]; do
msg_info "Attempt $attempt of $max_attempts"
if silent "$@"; then
msg_ok "Operation succeeded on attempt $attempt"
return 0
else
msg_warn "Attempt $attempt failed"
((attempt++))
if [[ $attempt -le $max_attempts ]]; then
msg_info "Retrying in 5 seconds..."
sleep 5
fi
fi
done
msg_error "Operation failed after $max_attempts attempts"
return 1
}
# Usage
retry_operation "apt-get install -y package"