Tips and tricks

.dropbox ignore alternative - auto watch folder
build your script
#!/bin/zsh
set -euo pipefail

# launchd has a minimal PATH; add Homebrew
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

WATCH_DIR="/Users/raduh/Dropbox/hosts/devsite/projects/FoodPlanner"

IGNORE_BASENAMES=(
  "node_modules"
  "dist"
  "build"
)

FSWATCH="/opt/homebrew/bin/fswatch"
XATTR="/usr/bin/xattr"
DATE="/bin/date"

echo "$($DATE) Starting Dropbox ignore watcher"
echo "$($DATE) WATCH_DIR=$WATCH_DIR"
echo "$($DATE) fswatch=$FSWATCH"

"$FSWATCH" -0 -r "$WATCH_DIR" | while IFS= read -r -d "" event
do
  if [ -d "$event" ]; then
    folder_name="$(basename "$event")"

    for name in "${IGNORE_BASENAMES[@]}"; do
      if [[ "$folder_name" == "$name" ]]; then
        if ! "$XATTR" -p com.dropbox.ignored "$event" >/dev/null 2>&1; then
          echo "$($DATE) Ignoring: $event"
          "$XATTR" -w com.dropbox.ignored 1 "$event" 2>/dev/null || true
        fi
      fi
    done
  fi
done

make sure your script is executable

chmod +x /Users/raduh/Dropbox/hosts/devsite/projects/bearfit/ignore-folders.sh

command:

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.radu.dropboxignore.plist
launchctl kickstart -k gui/$(id -u)/com.radu.dropboxignore

status:

launchctl print gui/$(id -u)/com.radu.dropboxignore

logs:

tail -n 200 /tmp/dropboxignore.log
tail -n 200 /tmp/dropboxignore-error.log

Leave a comment

Your email address will not be published

{"type":"main_options","images_arr":"'#ffffff'","bg_slideshow_time":"0","site_url":"https:\/\/digitalzoomstudio.net","theme_url":"https:\/\/digitalzoomstudio.net\/wp-content\/themes\/qucreative\/","is_customize_preview":"off","gallery_w_thumbs_autoplay_videos":"off","base_url":"https:\/\/digitalzoomstudio.net"}