Compare commits

...

2 Commits

Author SHA1 Message Date
ScriptFanix
fba7d5d0fd Merge branch '27-script-is-uselessly-verbose' into 'dev'
Resolve "Script is uselessly verbose"

See merge request atom/AtOM!36
2025-11-10 00:59:42 +01:00
ScriptFanix
3c9d8fdfe1 Resolve "Script is uselessly verbose" 2025-11-10 00:59:42 +01:00
4 changed files with 77 additions and 62 deletions

89
atom
View File

@ -231,8 +231,8 @@ do
done done
done done
deleted=0 unset deleted
removed=0 unset removed
echo 'BEGIN TRANSACTION;' >&3 echo 'BEGIN TRANSACTION;' >&3
for id in ${!removefile[@]} for id in ${!removefile[@]}
do do
@ -256,9 +256,9 @@ do
done done
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo -n "Suppressed $deleted files, $removed removed from database" echo -n "${deleted+$deleted files deleted${removed:+, }}${removed:+$removed removed from database}"
(( cron )) || echo -ne "\033[K" (( cron )) || echo -ne "\033[K"
echo (( deleted || removed )) && echo
unset removecount deleted removed removefile unset removecount deleted removed removefile
updateTags updateTags
@ -272,7 +272,8 @@ do
Update destination_files last_change 0 \ Update destination_files last_change 0 \
<<<"destination_id = $forcedestid" <<<"destination_id = $forcedestid"
else else
echo "Destination $forcedest does not exist!" >&2 echo "Full rebuild of destination $forcedest was requested," \
"but it does not exist!" >&2
fi fi
done done
@ -441,7 +442,7 @@ do
decodefiles+=("$line::AtOM:SQL:Sep::") decodefiles+=("$line::AtOM:SQL:Sep::")
read -u4 line read -u4 line
done done
(( cron )) || echo -n 'Creating tasks... ' (( cron )) || echo -n $'Creating tasks...\033[K'
(( textunidecodeneeded )) && ascii (( textunidecodeneeded )) && ascii
@ -547,8 +548,11 @@ do
tmpfile tmpfile
done done
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r\033[K'
echo "Created ${count:-0} tasks for $filecount files ${togo:+($togo left) }(${copies:-0} immediate copies)" (( count )) \
&& echo "Created $count tasks for $filecount files \
${togo:+($togo left) } \
${copies:+($copies immediate copies)}"
# remove perl unicode to ascii coprocess # remove perl unicode to ascii coprocess
(( textunidecodeneeded )) && eval exec "${toascii[1]}>&-" (( textunidecodeneeded )) && eval exec "${toascii[1]}>&-"
@ -563,7 +567,7 @@ remaining=$taskcount
failed=0 failed=0
echo 'BEGIN TRANSACTION;' >&3 echo 'BEGIN TRANSACTION;' >&3
committime=$EPOCHSECONDS committime=$EPOCHSECONDS
while (( (remaining || ${#workers[@]}) && ! quit )) while (( remaining || ${#workers[@]} ))
do do
timestamp=$EPOCHSECONDS timestamp=$EPOCHSECONDS
if (( $timestamp - committime >= 60 )) if (( $timestamp - committime >= 60 ))
@ -577,16 +581,15 @@ do
then then
concurrency="$fixed_workers" concurrency="$fixed_workers"
else else
if [ -z "$quit" ] \ if (( timestamp - concurrencychange >= loadinterval ))
&& (( ! pause )) \
&& (( timestamp - concurrencychange >= loadinterval ))
then then
if (( concurrency > 1 )) \ if (( concurrency > 1 || allow_zero_running )) \
&& (( load > maxload )) && (( load > maxload && concurrency ))
then then
concurrencychange=$timestamp concurrencychange=$timestamp
(( --concurrency )) (( --concurrency ))
elif (( load < maxload )) && (( active > concurrency - 1 )) elif (( load < maxload )) \
&& (( active > concurrency - 1 ))
then then
concurrencychange=$timestamp concurrencychange=$timestamp
(( ++concurrency )) (( ++concurrency ))
@ -595,16 +598,11 @@ do
fi fi
checkworkers checkworkers
cleaner cleaner
(( pause )) || master master
if (( ran - failed )) if (( ran - failed ))
then then
currenttime=$timestamp currenttime=$timestamp
if (( pause )) (( runtime = currenttime - starttime ))
then
(( runtime = pausestart - starttime - pausedtime ))
else
(( runtime = currenttime - starttime - pausedtime ))
fi
avgduration=$(( avgduration=$((
( runtime * 1000) ( runtime * 1000)
/ /
@ -640,11 +638,7 @@ do
fmtprogress="T:%${#taskcount}i/%i (F:%i) %3i%%" fmtprogress="T:%${#taskcount}i/%i (F:%i) %3i%%"
fmttime='%2id %2ih%02im%02is (A:%4.1fs/task)' fmttime='%2id %2ih%02im%02is (A:%4.1fs/task)'
eta="ETA:$( eta="ETA:$(
date -d "${days:-0} days printf "%(%c)T" "$(( currenttime + secsremaining ))"
${hours:-0} hours
${minutes:-0} minutes
${seconds:-0} seconds" \
+'%d/%m %H:%M:%S'
)" )"
(( cron )) || printf \ (( cron )) || printf \
"\r$fmtload $fmtworkers $fmtprogress $fmttime $eta\033[K"\ "\r$fmtload $fmtworkers $fmtprogress $fmttime $eta\033[K"\
@ -661,7 +655,7 @@ do
${minutes:-0} \ ${minutes:-0} \
${seconds:-0} \ ${seconds:-0} \
${avgdsec:-0}.${avgdmsec:-0} ${avgdsec:-0}.${avgdmsec:-0}
if (( pause )) if ! (( concurrency )) && ! (( cron ))
then then
if (( active )) if (( active ))
then then
@ -676,22 +670,25 @@ unset count
endtime=$EPOCHSECONDS endtime=$EPOCHSECONDS
(( elapsedseconds = endtime - starttime - pausedtime )) (( elapsedseconds = endtime - starttime ))
(( days = (( days =
elapsedseconds elapsedseconds
/ /
( 24*60*60 ) ( 24*60*60 )
)) || true )) || true
(( days )) || unset days
(( hours = (( hours =
( elapsedseconds - ( days*24*60*60 ) ) ( elapsedseconds - ( days*24*60*60 ) )
/ /
( 60*60 ) ( 60*60 )
)) || true )) || true
(( days && hours )) || unset hours
(( minutes = (( minutes =
( elapsedseconds - ( ( days*24 + hours ) *60*60 ) ) ( elapsedseconds - ( ( days*24 + hours ) *60*60 ) )
/ /
60 60
)) || true )) || true
(( days && hours && minutes )) || unset minutes
(( seconds = (( seconds =
elapsedseconds elapsedseconds
- -
@ -699,10 +696,15 @@ endtime=$EPOCHSECONDS
)) || true )) || true
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo -n "Ran ${ran:=0} tasks, $failed of which failed, in $days" \ (( ran )) \
"days, $hours hours, $minutes minutes and $seconds seconds." && echo -n "Ran $ran tasks${failed:+, $failed of which failed,} \
in ${days:+$days days,} \
${hours:+$hours hours,} \
${minutes:+$minutes minutes and} \
$seconds seconds."
(( cron )) || echo -en "\033[K" (( cron )) || echo -en "\033[K"
echo (( ran )) && echo
if (( failed )) if (( failed ))
then then
echo $'\nFailed tasks:\n' echo $'\nFailed tasks:\n'
@ -785,17 +787,10 @@ then
echo "${line%%::AtOM:SQL:Sep::*}" echo "${line%%::AtOM:SQL:Sep::*}"
line="${line#*::AtOM:SQL:Sep::}" line="${line#*::AtOM:SQL:Sep::}"
line="${line//::AtOM:SQL:Sep::/ }" line="${line//::AtOM:SQL:Sep::/ }"
echo $'\t'"${line/+( )$/}" echo $'\t'"${line/+( )$/}"$'\n'
echo
done done
fi fi
if [ -n "$quit" ]
then
closeDatabase
exit
fi
for destination in "${!destinationpath[@]}" for destination in "${!destinationpath[@]}"
do do
echo ' echo '
@ -922,9 +917,10 @@ do
(( textunidecodeneeded )) && eval exec "${toascii[1]}>&-" (( textunidecodeneeded )) && eval exec "${toascii[1]}>&-"
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo -n "$destination: Renamed ${changedcount:-0} files" (( changedcount )) \
&& echo -n "$destination: Renamed $changedcount files"
(( cron )) || echo -en "\033[K" (( cron )) || echo -en "\033[K"
echo (( changedcount )) && echo
fi fi
unset count changedcount renamefiles unset count changedcount renamefiles
done done
@ -945,7 +941,7 @@ echo '
SELECT "AtOM:NoMoreFiles"; SELECT "AtOM:NoMoreFiles";
' >&3 ' >&3
(( cron )) || echo -n 'Removing obsolete files... ' (( cron )) || echo -n 'Removing obsolete files...'$'\033[K'
lines=() lines=()
read -u4 line read -u4 line
while [[ $line != AtOM:NoMoreFiles ]] while [[ $line != AtOM:NoMoreFiles ]]
@ -972,11 +968,12 @@ do
done done
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo -n "Removed ${count:-0} obsolete files." (( count )) \
&& echo -n "Removed $count obsolete files."
(( cron )) || echo -en "\033[K" (( cron )) || echo -en "\033[K"
echo (( count )) && echo
echo "Purging empty directories." (( debug )) && echo "Purging empty directories..."
for path in "${destinationpath[@]}" for path in "${destinationpath[@]}"
do do
find "$path" -type d -empty -delete find "$path" -type d -empty -delete

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
copyFiles_action() { copyFiles_action() {
(( cron )) || echo -n "Copying files... " (( cron )) || echo -n $'Copying files...\033[K'
echo ' echo '
SELECT SELECT
source_files.filename, source_files.filename,
@ -79,15 +79,29 @@ copyFiles_action() {
fi fi
fi fi
fi fi
if cp -al "$sourcepath/$sourcefilename" "$destdir" 2>/dev/null\ if cp -a --reflink=always \
|| cp -a "$sourcepath/$sourcefilename" "$destdir" "$sourcepath/$sourcefilename" \
"$destdir" \
2>/dev/null \
|| cp -al \
"$sourcepath/$sourcefilename" \
"$destdir" \
2>/dev/null \
|| cp -a \
"$sourcepath/$sourcefilename" \
"$destdir"
then then
Update destination_files \ Update destination_files \
filename "$destdir/${sourcefilename##*/}"\ filename \
rename_pattern "${destinationrenamepath[$destination]}/${destinationrename[$destination]}"\ "$destdir/${sourcefilename##*/}"\
fat32compat ${destinationfat32compat["$destination"]}\ rename_pattern \
ascii ${destinationascii["$destination"]}\ "${destinationrenamepath[$destination]}/${destinationrename[$destination]}"\
last_change $lastchange \ fat32compat \
${destinationfat32compat["$destination"]}\
ascii \
${destinationascii["$destination"]}\
last_change \
$lastchange \
<<-EOWhere <<-EOWhere
id = $destfileid id = $destfileid
EOWhere EOWhere
@ -103,7 +117,7 @@ copyFiles_action() {
(( cron )) || echo -en "\033[K" (( cron )) || echo -en "\033[K"
echo echo
else else
(( cron )) || echo -e "\rNothing to copy.\033[K" (( cron )) || echo -n $'\r\033[K'
fi fi
unset count done unset count done
} }

View File

@ -67,6 +67,10 @@ getFiles() {
) )
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo "${count:-0} files found, ${new:=0} new or changed."$'\033[K' if (( count ))
then
echo "$count files found${new:+, $new new or changed}." \
$'\033[K'
fi
unset count unset count
} }

View File

@ -206,8 +206,8 @@ echo '
done done
echo 'COMMIT;' >&3 echo 'COMMIT;' >&3
(( cron )) || echo -n $'\r' (( cron )) || echo -n $'\r'
echo -n "Read tags from ${count:-0} files." (( count )) && echo -n "Read tags from $count files."
(( cron )) || echo -ne "\033[K" (( cron )) || echo -n $'\033[K'
echo (( count )) && echo
unset count tagfiles unset count tagfiles
} }