scripts/sync: refactor and also sync ~/knowledge
This commit is contained in:
67
scripts/sync
67
scripts/sync
@@ -37,26 +37,43 @@ homeMountFor() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
syncHost() {
|
sync_pkm() {
|
||||||
|
local host=$1
|
||||||
|
local me=$(hostname)
|
||||||
|
ssh "$host" "set -eux; remote=$me; "'cd ~/knowledge; old=$(git rev-parse --abbrev-ref HEAD); [ "$old" = master ]; st=$(git stash create); git reset --hard HEAD; git branch -D sync || true; git checkout -b sync; git fetch $remote master && git rebase $remote/master && (if [ -n "$st" ]; then git stash apply "$st"; fi) && git branch --move --force master || (git --reset-hard HEAD; git checkout "$old"; (if [ -n "$st" ]; then git stash apply "$st"; fi); false)'
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_music() {
|
||||||
local host=$1
|
local host=$1
|
||||||
shift
|
shift
|
||||||
local syncFlags=("$@")
|
|
||||||
local deskoHome=$(homeMountFor desko)
|
local deskoHome=$(homeMountFor desko)
|
||||||
local lappyHome=$(homeMountFor lappy)
|
local lappyHome=$(homeMountFor lappy)
|
||||||
local mobyHome=$(homeMountFor moby)
|
local mobyHome=$(homeMountFor moby)
|
||||||
case "$host" in
|
case $host in
|
||||||
(desko)
|
(desko)
|
||||||
ifExists /mnt/servo/media/Music/Various.Artists \
|
ifExists /mnt/servo/media/Music/Various.Artists \
|
||||||
sane-sync-music --compat /mnt/servo/media/Music "$deskoHome/Music" "${syncFlags[@]}"
|
sane-sync-music --compat /mnt/servo/media/Music "$deskoHome/Music" "$@"
|
||||||
sane-sync-from-iphone
|
|
||||||
;;
|
;;
|
||||||
(lappy)
|
(lappy)
|
||||||
ifExists /mnt/servo/media/Music/Various.Artists \
|
ifExists /mnt/servo/media/Music/Various.Artists \
|
||||||
sane-sync-music --compress --compat /mnt/servo/media/Music "$lappyHome/Music" "${syncFlags[@]}"
|
sane-sync-music --compress --compat /mnt/servo/media/Music "$lappyHome/Music" "${syncFlags[@]}"
|
||||||
;;
|
;;
|
||||||
(moby)
|
(moby)
|
||||||
# copy photos/screenshots from moby to desko:
|
ifExists /mnt/servo/media/Music/Various.Artists \
|
||||||
rsync -arv --exclude servo-macros "$mobyHome/Pictures/" "$deskoHome/Pictures/from/moby/"
|
sane-sync-music --compat /mnt/servo/media/Music "$mobyHome/Music" "${syncFlags[@]}"
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_books() {
|
||||||
|
local host="$1"
|
||||||
|
local deskoHome=$(homeMountFor desko)
|
||||||
|
local lappyHome=$(homeMountFor lappy)
|
||||||
|
local mobyHome=$(homeMountFor moby)
|
||||||
|
case $host in
|
||||||
|
(moby)
|
||||||
ifExists /mnt/servo/media/Books/Audiobooks \
|
ifExists /mnt/servo/media/Books/Audiobooks \
|
||||||
rsync -arv --delete /mnt/servo/media/Books/Audiobooks/ "$mobyHome/Books/Audiobooks/"
|
rsync -arv --delete /mnt/servo/media/Books/Audiobooks/ "$mobyHome/Books/Audiobooks/"
|
||||||
# copy books from servo to moby; delete old/untracked ones, but keep KOreader state files (sdr)
|
# copy books from servo to moby; delete old/untracked ones, but keep KOreader state files (sdr)
|
||||||
@@ -65,17 +82,32 @@ syncHost() {
|
|||||||
# TODO: recover servo Books/Visual collection, and then re-enable syncing
|
# TODO: recover servo Books/Visual collection, and then re-enable syncing
|
||||||
# ifExists /mnt/servo/media/Books/Visual \
|
# ifExists /mnt/servo/media/Books/Visual \
|
||||||
# rsync -arv --delete --exclude '*.sdr' /mnt/servo/media/Books/Books/ "$mobyHome/Books/Visual/"
|
# rsync -arv --delete --exclude '*.sdr' /mnt/servo/media/Books/Books/ "$mobyHome/Books/Visual/"
|
||||||
# copy music
|
|
||||||
ifExists /mnt/servo/media/Music/Various.Artists \
|
|
||||||
sane-sync-music --compat /mnt/servo/media/Music "$mobyHome/Music" "${syncFlags[@]}"
|
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
usage
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_photos() {
|
||||||
|
local host=$1
|
||||||
|
local deskoHome=$(homeMountFor desko)
|
||||||
|
local lappyHome=$(homeMountFor lappy)
|
||||||
|
local mobyHome=$(homeMountFor moby)
|
||||||
|
case $host in
|
||||||
|
(desko)
|
||||||
|
sane-sync-from-iphone
|
||||||
|
;;
|
||||||
|
(moby)
|
||||||
|
# copy photos/screenshots from moby to desko:
|
||||||
|
rsync -arv --exclude servo-macros "$mobyHome/Pictures/" "$deskoHome/Pictures/from/moby/"
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
hosts=()
|
hosts=()
|
||||||
|
targets=()
|
||||||
passthruArgs=()
|
passthruArgs=()
|
||||||
parseArgs() {
|
parseArgs() {
|
||||||
while [[ $# -ge 1 ]]; do
|
while [[ $# -ge 1 ]]; do
|
||||||
@@ -89,6 +121,10 @@ parseArgs() {
|
|||||||
hosts+=(desko lappy moby)
|
hosts+=(desko lappy moby)
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
(pkm|music|books|photos)
|
||||||
|
targets+=("$arg")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
(--verbose)
|
(--verbose)
|
||||||
if [[ "${#hosts[@]}" -eq 0 ]]; then
|
if [[ "${#hosts[@]}" -eq 0 ]]; then
|
||||||
SYNC_DEBUG=1
|
SYNC_DEBUG=1
|
||||||
@@ -113,10 +149,17 @@ parseArgs() {
|
|||||||
if [[ ${#hosts[@]} -eq 0 ]]; then
|
if [[ ${#hosts[@]} -eq 0 ]]; then
|
||||||
hosts+=(desko lappy moby)
|
hosts+=(desko lappy moby)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ ${#targets[@]} -eq 0 ]]; then
|
||||||
|
targets+=(pkm music photos books)
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
parseArgs "$@"
|
parseArgs "$@"
|
||||||
debug "hosts:" "${hosts[@]}"
|
debug "hosts:" "${hosts[@]}"
|
||||||
|
debug "targets:" "${targets[@]}"
|
||||||
|
for target in "${targets[@]}"; do
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
syncHost "$host" "${passthruArgs[@]}"
|
sync_"$target" "$host" "${passthruArgs[@]}"
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
Reference in New Issue
Block a user