89 lines
2.4 KiB
Bash
Executable File
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
|