summaryrefslogtreecommitdiff
path: root/scripts/sync/push.sh
blob: 9e35994f95a3cbbe5b912351c76b4bf71acac20b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#! /usr/bin/env sh

# https://serverfault.com/a/211083

set -e

DEST="$(cat remote)"
if [ ! -d $DEST ] && [[ ! $DEST =~ ":" ]]; then
  echo "Path $DEST does not exist."
  exit 1
fi

ARGS=()
FORCE=0
while getopts 'cfdr' opt; do
  case "$opt" in
    c) # Changes
      ARGS+=('--delete')
      ;;
    f) # Full
      ARGS+=('--checksum')
      ;;
    d) # Dry
      ARGS+=('--dry-run')
      ;;
    r) # Revert
      FORCE=1
      ;;
    *)
      echo "Unknown argument"
      exit 1
      ;;
  esac
done

if [ $FORCE = 0 ]; then
  ARGS+=('--update')
fi

rsync --archive --itemize-changes "${ARGS[@]}" ./$2 $DEST