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 }