#!/bin/bash
# Sync data between phone and laptop over USB.
# Requires `adb-sync`.
#
# Usage:
#   phone
#
# Note on filenames: sometimes you will see a permission error
# when trying to copy a file. This is usually because the filename
# contains illegal characters, like ":" or "?".
# See: <https://github.com/google/adb-sync/issues/34>

# sync directories TO the phone
cp ~/docs/pass.kdbx ~/docs/deaddrop/
adb-sync ~/docs/deaddrop/ /sdcard/deaddrop --delete --force --copy-links

declare -A backups
backups[DCIM/Camera]=~/photos/phone/dcim
backups[Pictures]=~/photos/phone/misc
backups[Movies/Signal]=~/photos/phone/movies.signal

# backup (i.e. don't delete)
# directories FROM the phone
for DIR in "${!backups[@]}"; do
    echo "Backing up /sdcard/${DIR} -> ${backups[$DIR]}"
    adb-sync --reverse "/sdcard/${DIR}/" "${backups[$DIR]}"
done

adb-sync --reverse "/sdcard/Backups/" ~/docs/backups/phone

# sync select music TO the phone
MUSIC_BASE_DIR=~/musics/

# parse a m3u playlist
function parse_songs() {
    while read line; do
        echo "${MUSIC_BASE_DIR}${line}"
    done <"$1"
}

# create temporary directory for songs
rm -rf /tmp/musics
mkdir /tmp/musics
parse_songs ~/musics/_playlists/phone.m3u | xargs -0 -d '\n' -I {} cp {} /tmp/musics/
rename 's/[:?*<>]//' /tmp/musics/*.{mp3,m4a} # rename to remove illegal characters
adb-sync /tmp/musics/ /sdcard/Music/musics --delete
