-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstop.sh
More file actions
161 lines (140 loc) · 3.96 KB
/
stop.sh
File metadata and controls
161 lines (140 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/bin/bash
# PuzzleSolver AI - Stop Script
# This script stops and optionally removes the PuzzleSolver Docker container
set -e # Exit on error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Print colored output
print_info() {
echo -e "${BLUE}ℹ${NC} $1"
}
print_success() {
echo -e "${GREEN}✓${NC} $1"
}
print_warning() {
echo -e "${YELLOW}⚠${NC} $1"
}
print_error() {
echo -e "${RED}✗${NC} $1"
}
print_header() {
echo ""
echo -e "${BLUE}================================${NC}"
echo -e "${BLUE} PuzzleSolver AI - Stop${NC}"
echo -e "${BLUE}================================${NC}"
echo ""
}
# Check if docker-compose is available
check_docker_compose() {
if command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker-compose"
return 0
elif docker compose version &> /dev/null 2>&1; then
COMPOSE_CMD="docker compose"
return 0
else
return 1
fi
}
# Stop with docker-compose
stop_with_compose() {
print_info "Stopping with docker-compose..."
$COMPOSE_CMD down
print_success "Stopped with docker-compose"
}
# Stop Docker container
stop_container() {
if docker ps --format '{{.Names}}' | grep -q '^puzzlesolver$'; then
print_info "Stopping PuzzleSolver container..."
docker stop puzzlesolver
print_success "Container stopped"
else
print_warning "Container is not running"
fi
}
# Remove Docker container
remove_container() {
if docker ps -a --format '{{.Names}}' | grep -q '^puzzlesolver$'; then
print_info "Removing PuzzleSolver container..."
docker rm puzzlesolver
print_success "Container removed"
fi
}
# Remove Docker image
remove_image() {
if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q '^puzzlesolver:latest$'; then
echo ""
read -p "Do you also want to remove the Docker image? (y/N) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
print_info "Removing Docker image..."
docker rmi puzzlesolver:latest
print_success "Image removed"
else
print_info "Keeping Docker image for faster restarts"
fi
fi
}
# Show data preservation message
show_data_message() {
echo ""
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN} Shutdown Complete${NC}"
echo -e "${GREEN}================================${NC}"
echo ""
echo "Your saved puzzles are preserved in:"
echo -e " ${BLUE}$(pwd)/saved_puzzles/${NC}"
echo ""
echo "To restart PuzzleSolver:"
echo -e " ${YELLOW}./start.sh${NC}"
echo ""
echo "To completely remove all data:"
echo -e " ${YELLOW}rm -rf saved_puzzles/ logs/ temp/${NC}"
echo -e " ${RED}(Warning: This will delete all saved puzzles!)${NC}"
echo ""
}
# Ask for cleanup options
ask_cleanup() {
echo ""
read -p "Do you want to remove all saved puzzles and data? (y/N) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo ""
print_warning "This will permanently delete all saved puzzles!"
read -p "Are you sure? (y/N) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
print_info "Removing data directories..."
rm -rf saved_puzzles/*
rm -rf logs/*
rm -rf temp/*
print_success "Data cleaned up"
else
print_info "Keeping saved data"
fi
fi
}
# Main execution
main() {
print_header
# Check if docker-compose.yml exists and try to use it
if [ -f "docker-compose.yml" ] && check_docker_compose; then
stop_with_compose
else
# Fallback to docker commands
stop_container
remove_container
remove_image
fi
# Ask about cleanup
ask_cleanup
# Show final message
show_data_message
print_success "Stop complete!"
}
# Run main function
main