-
Notifications
You must be signed in to change notification settings - Fork 0
/
usync
79 lines (67 loc) · 1.63 KB
/
usync
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash
# Theodore Nowak
# tsnowak@umich.edu
# 02/28/2018
# implemented using unison 2.40.*
# Look into using flags with getopts command
# Show percentage of progress with lsof (offset of file read pointer?)
# Make a sync for settings files (.vimrc, etc.) and for media/data files
INTERVAL=.1 # sleep interval
PRF='' # sync type/prf file used
DEFAULT='work'
dflag=''
fflag=''
function HELP {
printf "\nUsage:\n";
printf "[-d]\t\tUsed to sync the Default file ${DEFAULT}.prf.\n";
printf "[-f] [FILENAME]\tUsed to sync via a specified PRF file.\n";
printf "[-h]\t\tUsed to print flag options.\n\n";
exit 1
}
function UNISON {
printf "\nStarting Sync.\n"
# $PRF is name of .unison/$PRF.prf file
/usr/bin/unison $PRF &
pid=$! # id process of the running command
# single quotes interprate everything literally
# double will interprate backslash commands
spin='-\|/'
while kill -0 $pid 2>/dev/null
do
i=$(( (i+1) %4 ))
printf "\r${spin:$i:1}";
sleep $INTERVAL;
done
printf "\nSync Complete!\n"
}
while getopts 'df:h' flag; do
case "${flag}" in
d)
dflag='true'
PRF=$DEFAULT
printf "\nSyncing via ${PRF}.prf\n";
UNISON
;;
f)
PRF="${OPTARG}" >&2
printf "\nSyncing via ${PRF}.prf\n";
UNISON
;;
h)
HELP
;;
\?)
#printf "Invalid option: -${OPTARG}\n" >&1;
HELP
exit 1
;;
:)
#printf "Option -${OPTARG} requires an argument.\n";
HELP
exit 1
;;
esac
done
if [ $OPTIND -eq 1 ]; then
HELP
fi