Skip to content

Commit f77c79b

Browse files
committed
Handle Docker volume cleanup during install/uninstall
1 parent 91c934b commit f77c79b

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

scripts/install-oneliner.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,25 @@ INSTALL_DIR="$HOME/.needle"
152152
# Remove old installation if exists
153153
if [ -d "$INSTALL_DIR" ]; then
154154
print_warning "Directory $INSTALL_DIR already exists. Removing old installation..."
155-
rm -rf "$INSTALL_DIR"
155+
156+
# Stop any running services first
157+
if [ -f "$INSTALL_DIR/docker/docker-compose.infrastructure.yaml" ]; then
158+
print_status "Stopping existing Docker services..."
159+
docker compose -f "$INSTALL_DIR/docker/docker-compose.infrastructure.yaml" down -v 2>/dev/null || true
160+
fi
161+
162+
# Remove Docker volumes (may require elevated permissions)
163+
if [ -d "$INSTALL_DIR/volumes" ]; then
164+
print_status "Cleaning up Docker volumes..."
165+
# Use Docker to remove volume files (runs as root)
166+
docker run --rm -v "$INSTALL_DIR/volumes:/volumes" alpine sh -c "rm -rf /volumes/*" 2>/dev/null || true
167+
fi
168+
169+
# Now remove the directory
170+
rm -rf "$INSTALL_DIR" 2>/dev/null || {
171+
print_error "Failed to remove $INSTALL_DIR. You may need to run: sudo rm -rf $INSTALL_DIR"
172+
exit 1
173+
}
156174
fi
157175

158176
# Clone repository directly to ~/.needle

scripts/uninstall.sh

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,23 @@ fi
131131

132132
### Step 4: Remove entire Needle directory
133133
print_status "Removing Needle installation directory..."
134-
rm -rf "$NEEDLE_DIR"
135-
print_success "Needle directory removed"
134+
135+
# Clean up Docker volume files (may have root ownership)
136+
if [ -d "$NEEDLE_DIR/volumes" ]; then
137+
print_status "Cleaning up Docker volume files..."
138+
docker run --rm -v "$NEEDLE_DIR/volumes:/volumes" alpine sh -c "rm -rf /volumes/*" 2>/dev/null || true
139+
fi
140+
141+
rm -rf "$NEEDLE_DIR" 2>/dev/null || {
142+
print_error "Failed to remove some files in $NEEDLE_DIR"
143+
print_status "You may need to run: sudo rm -rf $NEEDLE_DIR"
144+
}
145+
146+
if [ ! -d "$NEEDLE_DIR" ]; then
147+
print_success "Needle directory removed"
148+
else
149+
print_warning "Some files could not be removed. Run: sudo rm -rf $NEEDLE_DIR"
150+
fi
136151

137152
### Step 5: Final message
138153
print_success "🎉 Uninstallation complete!"

0 commit comments

Comments
 (0)