To configure this script to automatically execute on file changes, save the XML config in ~/Library/LaunchAgents/dot-files.sync.plist then do:
launchctl load -w ~/Library/LaunchAgents/dot-files.sync.plist
To configure this script to automatically execute on file changes, save the XML config in ~/Library/LaunchAgents/dot-files.sync.plist then do:
launchctl load -w ~/Library/LaunchAgents/dot-files.sync.plist
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <dict> | |
| <key>Label</key> | |
| <string>dot-files.sync</string> | |
| <key>ProgramArguments</key> | |
| <array> | |
| <string>/Users/alex/Projects/dot-files/sync-repo.sh</string> | |
| </array> | |
| <key>WatchPaths</key> | |
| <array> | |
| <string>/Users/alex/Projects/dot-files</string> | |
| </array> | |
| <key>ThrottleInterval</key> | |
| <integer>30</integer> | |
| <key>StandardOutPath</key> | |
| <string>/Users/alex/bin/log/sync-dot-files.log</string> | |
| <key>StandardErrorPath</key> | |
| <string>/Users/alex/bin/log/sync-dot-files.log</string> | |
| </dict> | |
| </plist> |
| #!/usr/bin/env bash | |
| set -e | |
| cleanup() | |
| { | |
| echo "Cleaning up ..." | |
| if [ -n "$SSH_AGENT_PID" ]; then | |
| echo "Killing ssh-agent PID $SSH_AGENT_PID" | |
| kill "$SSH_AGENT_PID" | |
| else | |
| echo "WARN: SSH_AGENT_PID not set!" | |
| fi | |
| } | |
| trap cleanup EXIT | |
| export PATH="$HOME/bin:/usr/local/bin:/usr/local/sbin:$PATH" | |
| echo "----------------------" | |
| date | |
| echo "..." | |
| eval $(ssh-agent -s) | |
| ssh-add -K | |
| echo "Synchronizing dot-files" | |
| cd /Users/alex/Projects/personale/dot-files | |
| git-sync |