···11+.PHONY: start logs help
22+33+.DEFAULT_GOAL := loop
44+55+# Start mail sync
66+loop:
77+ ~/.config/mutt/launchctl/mail_sync_watch.sh --loop
88+99+# Show logs
1010+logs:
1111+ tail -f ~/.config/mutt/logs/mail_sync.log
1212+1313+# Show help
1414+help:
1515+ @echo "Mail Sync Makefile commands:"
1616+ @echo " make start - Start mail sync loop"
1717+ @echo " make logs - Show mail sync logs"
1818+ @echo ""
1919+ @echo "Note: Use Ctrl+C to stop the sync"
+73
mutt/.config/mutt/sync/Makefile
···11+.DEFAULT_GOAL := sync_status
22+33+# Makefile for managing Neomutt sync launchd job
44+55+# Variables
66+PLIST_FILE = ~/Library/LaunchAgents/com.user.neomuttsync.plist
77+LABEL = com.user.neomuttsync
88+LOG_FILE = ~/.config/mutt/logs/sync_status.log
99+1010+# Phony targets
1111+.PHONY: load unload reload status check help sync_status next_run
1212+1313+# Default target
1414+help:
1515+ @echo "Usage:"
1616+ @echo " make load - Load the launchd job"
1717+ @echo " make unload - Unload the launchd job"
1818+ @echo " make reload - Reload the launchd job"
1919+ @echo " make status - Check the status of the launchd job"
2020+ @echo " make check - Validate the plist file"
2121+ @echo " make sync_status - Check if a sync is currently running"
2222+ @echo " make next_run - Show the next scheduled run time"
2323+2424+# Load the launchd job
2525+load:
2626+ launchctl load $(PLIST_FILE)
2727+ @echo "Launchd job loaded."
2828+2929+# Unload the launchd job
3030+unload:
3131+ launchctl unload $(PLIST_FILE)
3232+ @echo "Launchd job unloaded."
3333+3434+# Reload the launchd job
3535+reload: unload load
3636+3737+# Check the status of the launchd job
3838+status:
3939+ @launchctl list | grep $(LABEL) || echo "Job is not loaded."
4040+4141+4242+# Check the status of the launchd job
4343+status2:
4444+ @echo "Job Status:"
4545+ @launchctl list $(LABEL) || echo "Job is not loaded."
4646+ @echo "\nNext Run Time:"
4747+ @launchctl print $(LABEL) | grep 'next' || echo "Unable to determine next run time."
4848+ @echo "\nLast Exit Status:"
4949+ @launchctl print $(LABEL) | grep 'last exit code' || echo "No exit status available."
5050+5151+# Validate the plist file
5252+check:
5353+ plutil -lint $(PLIST_FILE)
5454+5555+# Check if a sync is currently running
5656+sync_status:
5757+ @if pgrep -f "neomutt_sync.sh" > /dev/null; then \
5858+ echo "Sync is currently running."; \
5959+ ps aux | grep "[n]eomutt_sync.sh"; \
6060+ else \
6161+ echo "No sync is currently running."; \
6262+ echo "Last sync status:"; \
6363+ tail -n 1 $(LOG_FILE); \
6464+ fi
6565+6666+# Show the next scheduled run time
6767+next_run:
6868+ @next_run_time=$$(launchctl list $(LABEL) | awk '/next exit/ {print $$1}'); \
6969+ if [ -n "$$next_run_time" ]; then \
7070+ date -r $$next_run_time; \
7171+ else \
7272+ echo "Unable to determine next run time. Check if the job is loaded."; \
7373+ fi
···11+#!/bin/bash
22+33+# Log file path
44+LOG_FILE=~/.config/mutt/logs/sync_status.log
55+66+# Function to check if connected to Wi-Fi
77+check_wifi() {
88+ wifi_name=$(networksetup -getairportnetwork en0 | awk -F": " '{print $2}')
99+ if [ -n "$wifi_name" ]; then
1010+ return 0 # Connected to Wi-Fi
1111+ else
1212+ return 1 # Not connected to Wi-Fi
1313+ fi
1414+}
1515+1616+# Log start time
1717+echo "Sync started at $(date)" >> "$LOG_FILE"
1818+1919+# Check if connected to Wi-Fi
2020+if check_wifi; then
2121+ # Run the first sync
2222+ offlineimap -a sspaeti.com
2323+2424+ # Wait for 2 seconds
2525+ sleep 2
2626+2727+ # Run the screener
2828+ ~/.config/mutt/initial_screening.sh >> ~/.config/mutt/logs/screening.log 2>&1
2929+3030+ # Wait for 2 seconds
3131+ sleep 2
3232+3333+ # Run the second sync
3434+ offlineimap -a sspaeti.com
3535+3636+ echo "Sync completed successfully at $(date)" >> "$LOG_FILE"
3737+else
3838+ echo "Not connected to Wi-Fi. Sync not performed at $(date)" >> "$LOG_FILE"
3939+fi
4040+4141+# Remove log entries older than 7 days
4242+find "$LOG_FILE" -mtime +7 -delete