Files
jrnl/uninstall.sh
2025-11-29 14:22:30 +02:00

89 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
# JRNL Uninstallation Script
#
JRNL_DIR="$HOME/.jrnl"
LOCAL_BIN="$HOME/.local/bin"
echo "JRNL Uninstaller"
echo
# Confirm uninstall
read -p "Are you sure you want to uninstall JRNL? (y/N): " confirm
if [[ ! "$confirm" =~ ^([yY][eE][sS]|[yY])$ ]]; then
echo "Uninstall cancelled"
exit 0
fi
# Offer database backup
if [ -f "$JRNL_DIR/jrnl.db" ]; then
echo
read -p "Backup database before uninstalling? (Y/n): " backup
backup=${backup:-Y}
if [[ "$backup" =~ ^([yY][eE][sS]|[yY])$ ]]; then
BACKUP_FILE="$HOME/jrnl_backup_$(date +%Y%m%d_%H%M%S).db"
cp "$JRNL_DIR/jrnl.db" "$BACKUP_FILE"
echo "✓ Database backed up to $BACKUP_FILE"
fi
fi
echo
echo "Uninstalling JRNL..."
# Remove git hooks
remove_git_hooks() {
HOOKS_PATH=$(git config --global core.hooksPath 2>/dev/null || echo "")
if [ -n "$HOOKS_PATH" ] && [ -f "$HOOKS_PATH/post-commit" ]; then
echo "Removing JRNL from git hooks..."
# Remove JRNL-specific lines
if grep -q "JRNL" "$HOOKS_PATH/post-commit"; then
# Create temp file without JRNL lines
grep -v "JRNL" "$HOOKS_PATH/post-commit" | \
grep -v "jrnl" | \
grep -v "disown" > "$HOOKS_PATH/post-commit.tmp"
# Check if hook is now empty (only shebang or empty)
if [ $(wc -l < "$HOOKS_PATH/post-commit.tmp") -le 2 ]; then
rm "$HOOKS_PATH/post-commit"
echo "✓ Removed empty post-commit hook"
else
mv "$HOOKS_PATH/post-commit.tmp" "$HOOKS_PATH/post-commit"
chmod +x "$HOOKS_PATH/post-commit"
echo "✓ Removed JRNL from post-commit hook"
fi
# Clean up temp file if it exists
rm -f "$HOOKS_PATH/post-commit.tmp"
fi
fi
}
# Remove JRNL directory
if [ -d "$JRNL_DIR" ]; then
rm -rf "$JRNL_DIR"
echo "✓ Removed $JRNL_DIR"
fi
# Remove CLI wrapper
if [ -f "$LOCAL_BIN/jrnl" ]; then
rm "$LOCAL_BIN/jrnl"
echo "✓ Removed $LOCAL_BIN/jrnl"
fi
# Remove git hooks
remove_git_hooks
echo
echo "============================================================"
echo "JRNL uninstalled successfully"
echo "============================================================"
echo
if [ -f "$HOME/jrnl_backup_"*.db ]; then
echo "Your database backup(s) are in your home directory"
fi