#!/bin/sh
# Sync icloud photos to machine using a 
# simple wrapper for tmux and icloudpd

# Check if icloudpd is available
if ! type icloudpd >/dev/null; then
    echo "please install icloud photo downloader."
    echo "See: https://github.com/icloud-photos-downloader/icloud_photos_downloader"
    exit 1
fi

# Ensure environment variables are set
if [[ -z "$ICLOUD_DIR" ]]; then
  echo 'please set $ICLOUD_DIR'
  exit 1
fi

if [[ -z "$ICLOUD_USERNAME" ]]; then
  echo 'please set $ICLOUD_USERNAME'
  exit 1
fi

# tmux session name
session="icloudsync"

attach () {
  tmux attach-session -t $session
}

check_session () {
  tmux has-session -t $session 2>/dev/null
  if [ $? == 0 ]; then
    return 1
  else
    return 0
  fi
}

start_sync () {
  if check_session 0; then
    tmux new-session -d -s $session
    tmux send-keys -t $session 'icloudpd --directory=$ICLOUD_DIR --username $ICLOUD_USERNAME --watch-with-interval 3600' C-m
    echo started
  else
    echo already active
  fi
}

stop_sync () {
  if check_session 0; then
    echo inactive
  else
    tmux send-keys -t $session C-c exit C-m
    echo stopped
  fi
}

status () {
  if check_session 0; then
    echo inactive
  else
    tmux capture-pane -t icloudsync -p -S -1 | tail -1
  fi
}

if [[ $# -eq 0 ]]; then
  echo "Available commands are: start, stop, attach, status"
fi

while [[ $# -gt 0 ]]; do
  case $1 in 
    start)
      start_sync
      ;;
    stop)
      stop_sync
      ;;
    attach)
      attach
      ;;
    status)
      status
      ;;
  esac
  exit
done