#!/usr/bin/env bash # BadAI command-line tool # Usage: badai restart [--sleep N] set -e # Exit on error sleep_time=3 # Default sleep time in seconds # Parse arguments if [[ "$1" == "restart" ]]; then name="" if [[ "$2" == "--sleep" && -n "$3" && "$3" =~ ^[0-9]+$ ]]; then sleep_time="$3" name="$4" elif [[ -n "$2" ]]; then name="$2" fi echo "Reloading systemd user daemon..." systemctl --user daemon-reload if [[ -n "$name" ]]; then # Riavvia servizio specifico # Cerca container container_file="" for file in ~/.config/containers/systemd/*.container; do if [[ -f "$file" ]]; then if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi service_name=$(basename "$file" .container) display_name=$(echo "$service_name" | sed 's/^[0-9]*_//') if [[ "$display_name" == "$name" ]]; then container_file="$file" break fi fi done if [[ -n "$container_file" ]]; then service_name=$(basename "$container_file" .container) echo "Restarting container $name..." if systemctl --user restart "$service_name" 2>/dev/null; then echo " ✓ $name restarted successfully" else echo " ✗ Failed to restart $name" fi else # Cerca network network_file="" for file in ~/.config/containers/systemd/*.network; do if [[ -f "$file" ]]; then if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi service_name=$(basename "$file" .network)-network display_name=$(echo "$service_name" | sed 's/^[0-9]*_//') if [[ "$display_name" == "$name" ]]; then network_file="$file" break fi fi done if [[ -n "$network_file" ]]; then service_name=$(basename "$network_file" .network)-network echo "Restarting network $name..." if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then echo " ✓ $name restarted successfully" else echo " ✗ Failed to restart $name" fi else echo "Service $name not found." exit 1 fi fi # Riavvia nginx nginx_file="" for file in ~/.config/containers/systemd/*nginx*.container; do if [[ -f "$file" ]]; then nginx_file="$file" break fi done if [[ -n "$nginx_file" ]]; then service_name=$(basename "$nginx_file" .container) echo "Restarting nginx..." if systemctl --user restart "$service_name" 2>/dev/null; then echo " ✓ nginx restarted successfully" else echo " ✗ Failed to restart nginx" fi fi else # Riavvia tutti echo "Restarting all quadlet networks..." for file in ~/.config/containers/systemd/*.network; do if [[ -f "$file" ]]; then if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi service_name=$(basename "$file" .network)-network display_name=$(echo "$service_name" | sed 's/^[0-9]*_//') echo "Restarting $display_name..." if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then echo " ✓ $display_name restarted successfully" else echo " ✗ Failed to restart $display_name" fi sleep "$sleep_time" fi done echo "Restarting all quadlet containers..." for file in ~/.config/containers/systemd/*.container; do if [[ -f "$file" ]]; then if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi service_name=$(basename "$file" .container) display_name=$(echo "$service_name" | sed 's/^[0-9]*_//') echo "Restarting $display_name..." if systemctl --user restart "$service_name" 2>/dev/null; then echo " ✓ $display_name restarted successfully" else echo " ✗ Failed to restart $display_name" fi sleep "$sleep_time" fi done echo "All services restarted successfully." fi elif [[ "$1" == "help" || -z "$1" ]]; then cat <<'EOF' B A D A I - C O M M A N D L I N E -------------------------------------------------------------------------------- Usage: badai [options] Commands: restart [--sleep N] [name] Restart all quadlet containers and networks, or a specific one by name (without prefix), reload systemd user daemon help Show this help message Options: --sleep N Sleep N seconds between restarts (default: 3) EOF else echo "Unknown command: $1" echo "Use 'badai help' for usage." fi