scripts/sync: refactor and also sync ~/knowledge

This commit is contained in:
2024-12-15 01:59:14 +00:00
parent 4d3caba74e
commit 8141c94948

View File

@@ -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