dotfiles

Dash Eclipse's dotfiles
git clone git://ezup.dev/dotfiles.git
Log | Files | Refs | README | LICENSE

webdav-curl-sync.sh (1640B)


      1#!/bin/sh
      2
      3## $ crontab -l
      4## @reboot sleep 60 && ~/.local/bin/webdav-curl-sync.sh -d
      5## 0 */3 * * * ~/.local/bin/webdav-curl-sync.sh -d
      6
      7LAST_UPLOADED=""
      8: "${progname:="${0##*/}"}"
      9
     10preview() {
     11	curl -s https://user:password@domain.tld:port/orgmode.org
     12}
     13
     14download() {
     15	for orgmode in file1 file2; do
     16		#HTTPS_PROXY="socks5h://127.0.0.1:1080"
     17		filename="${orgmode}.org"
     18		file="$HOME/orgmode/$filename"
     19		uri="https://user:password@domain.tld:port/${orgmode}.org"
     20		if test -e "$file"; then
     21			zflag="-z $file"
     22		else
     23			zflag=
     24		fi
     25		HTTP_CODE=$(curl -sR --write-out %{http_code} -o "$file" $zflag "$uri")
     26		LAST_MODIFIED=$(date -r $file -u '+%F %T')
     27		echo -n 'Download: '
     28		case "$HTTP_CODE" in
     29			304) echo "$LAST_MODIFIED $filename (bypassed)";;
     30			200) echo "$LAST_MODIFIED $filename (update)";;
     31			000) echo "$filename (failed)";;
     32		*) echo "$filename ($HTTP_CODE)";;
     33		esac
     34	done
     35}
     36
     37upload() {
     38	dir="$HOME/orgmode"
     39	uri="https://user:password@domain.tld:port/orgmode"
     40	for orgmode in $dir/*.org; do
     41		filename=$(basename $orgmode)
     42		filemod=$(stat -c %Y $orgmode)
     43		if [ "$filemod" -gt "$LAST_UPLOADED" ]; then
     44			HTTP_CODE=$(curl -s -o /dev/null --write-out %{http_code} -T "$orgmode" "$uri/$filename")
     45			if [ "$HTTP_CODE" = "201" ]; then
     46				echo "UPLOAD:   $filename"
     47				sed -i "s/^LAST_UPLOADED=.*$/LAST_UPLOADED=\"$(date +%s)\"/" $(realpath $0)
     48			else
     49				echo "UPLOAD:   $filename (failed)"
     50			fi
     51		else
     52			echo "UPLOAD:   $filename (bypassed)"
     53		fi
     54	done
     55}
     56
     57usage() {
     58	echo "Usage: $progname -p|-u|-d|-a"
     59}
     60
     61case "$1" in
     62	-p) preview ;;
     63	-u) upload ;;
     64	-d) download ;;
     65	-a) download; upload ;;
     66	*) usage ;;
     67esac
     68exit 0