first commit
This commit is contained in:
142
BadAI/badai
Normal file
142
BadAI/badai
Normal file
@@ -0,0 +1,142 @@
|
||||
#!/usr/bin/env bash
|
||||
# DuckAI command-line tool
|
||||
# Usage: duckai 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'
|
||||
D U C K A I - C O M M A N D L I N E
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Usage: duckai <command> [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 'duckai help' for usage."
|
||||
fi
|
||||
Reference in New Issue
Block a user