File: android-deltas-sync/_etc/bash-version/common.sh
#####################################################################
# Code used by scripts run on both PC and phone => NO EDITS REQUIRED.
# In config-*, set PauseSteps=n to avoid having to press Enter here,
# and set CheckFilenames=n to avoid name-fixer interactions here.
# You can also change Z here to point to a newer installed ziptools.
# Assumes a config-*.txt has been sourced first, to assign settings.
#####################################################################
#
# globals, logs dir
#
# ziptools source-code folder (included in Mergeall)
Z=$M/test/ziptools
# logfile date stamp
stamp=$(date +%y-%m-%d) # e.g., 21-09-28 for Sep 28, 2021 (sortable)
# ensure logfiles folder in all scripts
if [ ! -d $L ]; then { rm -f $L; mkdir $L; } fi
# fix Windows non-ASCII prints when 'script > file' (need if run by WSL?)
PYTHONIOENCODING=utf8
# print runtime from bash 'time' in 1 line instead of the 3-line default
TIMEFORMAT=' Runtime: real=%3lR, user=%3lU, sys=%3lS'
#
# config errors; $STUFF is also checked in some scripts
#
# error-check Mergeall path in all scripts
if [ ! -d $M ]; then
echo "The \$M (Mergeall) path does not exist: $M"
echo 'Exiting; please check the config file and rerun.'
exit
fi
# error-check TO path in all scripts
if [ ! -d $T ]; then
echo "The \$T (to) path does not exist: $T"
echo 'Exiting; please check the config file and rerun.'
exit
fi
# error-check FROM path in all scripts
if [ ! -d $F ]; then
echo "The \$F (from) path does not exist: $F"
echo 'Exiting; please check the config file and rerun.'
exit
fi
function announce {
#
# a conditional 'read -p', function: () optional, args are $N
#
echo
echo START: $1
if [ $PauseSteps == 'y' ]; then
read -p 'Press enter/return to continue'
fi
}
function offerFixnamesRun {
#
# on PC, prompt to run filename fixer, in both initial copy and syncs
#
if [ $CheckFilenames == y ]
then
cat <<-EOF
It is recommended to run fix-nonportable-filenames.py before
propagating content from Unix to Windows, some Android's shared
storage, and proxy drives using the FAT32 or exFAT filesystems.
EOF
read -p 'Run the name-fixer script in report-only mode (y or n)? ' userreply
if [[ -n $userreply && $userreply == 'y' ]]; then
time python3 $M/fix-nonportable-filenames.py $F/$STUFF -
fi
read -p 'Run the name-fixer script to fix filenames (y or n)? ' userreply
if [[ -n $userreply && $userreply == 'y' ]]; then
time python3 $M/fix-nonportable-filenames.py $F/$STUFF
else
echo 'Name-fixer script not run'
fi
fi
}
function verifyPCtoProxy {
#
# on PC, verify that PC and proxy content same, both initial and syncs
#
if [ $VerifyProxy == y ]
then
echo
read -p 'Verify PC copy to proxy copy (y or n)? ' userreply
if [[ -n $userreply && $userreply == 'y' ]]
then
announce 'Verifying proxy with mergeall'
time python3 $M/mergeall.py $F/$STUFF $T/$STUFF -report -skipcruft \
> $L/$stamp--$1-verify-mergeall-log.txt
announce 'Verifying proxy with diffall'
time python3 $M/diffall.py $F/$STUFF $T/$STUFF -skipcruft \
> $L/$stamp--$2-verify-diffall-log.txt
fi
fi
}
function previewChanges {
#
# On PC, show PC~proxy deltas before saving or propagating, syncs only
#
if [ $PreviewSyncs == y ]
then
echo
read -p 'Preview changes in the source tree (y or n)? ' userreply
if [[ -n $userreply && $userreply == 'y' ]]
then
announce 'Previewing changes to be synced'
time python3 $M/mergeall.py $F/$STUFF $T/$STUFF -report -skipcruft
echo
read -p 'Continue with sync (y or n)? ' userreply
if [[ -z $userreply || $userreply != 'y' ]]
then
echo 'Sync aborted'
exit
fi
fi
fi
}