feat: add shared shell utilities
- Add common aliases, exports, and functions - Add shell completions and prompt configuration - Add sync utilities for cross-shell compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
84
shared/sync
Normal file
84
shared/sync
Normal file
@@ -0,0 +1,84 @@
|
||||
# Dotfiles Auto-Sync Configuration
|
||||
# This file is sourced by shell configurations to enable automatic syncing
|
||||
|
||||
# Function to run dotfiles sync
|
||||
dotfiles_sync() {
|
||||
if [[ -x "$HOME/.dotfiles/sync.sh" ]]; then
|
||||
"$HOME/.dotfiles/sync.sh" --background
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to enable/disable sync
|
||||
dotfiles_sync_enable() {
|
||||
echo "true" > "$HOME/.dotfiles/.sync_enabled"
|
||||
echo "✅ Dotfiles auto-sync enabled"
|
||||
}
|
||||
|
||||
dotfiles_sync_disable() {
|
||||
echo "false" > "$HOME/.dotfiles/.sync_enabled"
|
||||
echo "❌ Dotfiles auto-sync disabled"
|
||||
}
|
||||
|
||||
# Function to manually trigger sync
|
||||
dotfiles_sync_now() {
|
||||
if [[ -x "$HOME/.dotfiles/sync.sh" ]]; then
|
||||
"$HOME/.dotfiles/sync.sh" --manual
|
||||
else
|
||||
echo "❌ Sync script not found or not executable"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to force sync (ignores timing)
|
||||
dotfiles_sync_force() {
|
||||
if [[ -x "$HOME/.dotfiles/sync.sh" ]]; then
|
||||
"$HOME/.dotfiles/sync.sh" --force
|
||||
else
|
||||
echo "❌ Sync script not found or not executable"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to show sync status
|
||||
dotfiles_sync_status() {
|
||||
local sync_enabled_file="$HOME/.dotfiles/.sync_enabled"
|
||||
local last_sync_file="$HOME/.dotfiles/.last_sync"
|
||||
local sync_log="$HOME/.dotfiles/.sync.log"
|
||||
|
||||
echo "🔧 Dotfiles Sync Status:"
|
||||
|
||||
if [[ -f "$sync_enabled_file" ]]; then
|
||||
local enabled=$(cat "$sync_enabled_file")
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
echo " Status: ✅ Enabled"
|
||||
else
|
||||
echo " Status: ❌ Disabled"
|
||||
fi
|
||||
else
|
||||
echo " Status: ✅ Enabled (default)"
|
||||
fi
|
||||
|
||||
if [[ -f "$last_sync_file" ]]; then
|
||||
local last_sync=$(cat "$last_sync_file")
|
||||
local last_sync_date=$(date -d "@$last_sync" 2>/dev/null || echo "Unknown")
|
||||
echo " Last sync: $last_sync_date"
|
||||
else
|
||||
echo " Last sync: Never"
|
||||
fi
|
||||
|
||||
if [[ -f "$sync_log" ]]; then
|
||||
echo " Recent activity:"
|
||||
tail -3 "$sync_log" | sed 's/^/ /'
|
||||
fi
|
||||
}
|
||||
|
||||
# Auto-sync on shell startup (only for interactive shells)
|
||||
if [[ $- == *i* ]] && [[ -n "$HOME" ]] && [[ -d "$HOME/.dotfiles" ]]; then
|
||||
dotfiles_sync
|
||||
|
||||
# Also check for updates periodically (background, no output)
|
||||
if [[ -f "$HOME/.dotfiles/lib/update_checker.sh" ]]; then
|
||||
(
|
||||
source "$HOME/.dotfiles/lib/update_checker.sh"
|
||||
check_for_updates false false >/dev/null 2>&1 &
|
||||
)
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user