scripts: Check deps, cleanup, max image size.

This commit is contained in:
William Floyd 2023-07-14 13:41:35 -05:00
parent a8b9643a99
commit a6c0161627
Signed by untrusted user who does not match committer: william
GPG key ID: B3EEEDD81893CAF9
3 changed files with 62 additions and 35 deletions

View file

@ -10,15 +10,14 @@ export PATH
__needed_programs='convert
identify
fdp
bc'
__fatal_error='false'
export __fatal_error='false'
while read -r __program; do
if ! which "${__program}" &>/dev/null; then
echo "Need '${__program}'"
__fatal_error='true'
export __fatal_error='true'
fi
done <<<"${__needed_programs}"
@ -37,13 +36,16 @@ PATH'
########################################
__PROCESS_JPEG=true
__depends__PROCESS_JPEG=(JPEG_RESCALE JPEG_CONVERT_LOSSLESS)
__depends__PROCESS_JPEG=(JPEG_RESCALE JPEG_CONVERT_LOSSLESS JPEG_TARGET_SIZE)
# false/auto
__JPEG_RESCALE=auto
__depends__JPEG_RESCALE=(JPEG_RESCALE_THRESHOLD)
# for auto, in KP
__JPEG_RESCALE_THRESHOLD=2000
__JPEG_CONVERT_LOSSLESS=false
__JPEG_TARGET_SIZE=true
__depends__JPEG_TARGET_SIZE=(JPEG_TARGET_SIZE_BYTES)
__JPEG_TARGET_SIZE_BYTES='150000'
__PROCESS_PNG=true
__depends__PROCESS_PNG=(PNG_RESCALE PNG_CONVERT_LOSSLESS)
@ -56,6 +58,7 @@ __PNG_CONVERT_LOSSLESS=true
__PROCESS_SCRIPT=false
__WEBP_METHOD='6'
__WEBP_QUALITY='50'
__ENVIRONMENT_LIST='PROCESS_JPEG
@ -63,10 +66,13 @@ PROCESS_PNG
PROCESS_SCRIPT
JPEG_RESCALE
JPEG_RESCALE_THRESHOLD
JPEG_TARGET_SIZE
JPEG_TARGET_SIZE_BYTES
JPEG_CONVERT_LOSSLESS
PNG_RESCALE
PNG_RESCALE_THRESHOLD
PNG_CONVERT_LOSSLESS
WEBP_METHOD
WEBP_QUALITY'
###############################################################################
@ -76,8 +82,8 @@ WEBP_QUALITY'
__fatal_error_handler() {
if [ "${__fatal_error}" == 'true' ]; then
echo 'Fatal Error: Exiting'
exit
fi
exit 1
fi || exit 1
}
########################################
@ -239,6 +245,11 @@ __unset_unused() {
__process() {
if [ "${PROCESS_SCRIPT}" == 'true' ]; then
__process_scripts -r
__fatal_error_handler
__process_scripts
fi
@ -289,10 +300,12 @@ __process_generic_image() {
__img_rescale="${1^^}_RESCALE"
__img_rescale_threshold="${1^^}_RESCALE_THRESHOLD"
__img_convert_lossless="${1^^}_CONVERT_LOSSLESS"
__img_convert_target_size="${1^^}_TARGET_SIZE"
__img_convert_target_size_bytes="${1^^}_TARGET_SIZE_BYTES"
__print_env
__convert_options=("-auto-orient" "-quality" "${__WEBP_QUALITY}")
__convert_options=("-auto-orient" "-quality" "${__WEBP_QUALITY}" "-define" "webp:method=${__WEBP_METHOD}")
if [ "${!__img_convert_lossless}" == 'true' ]; then
__convert_options+=("-define" "webp:lossless=true")
@ -304,6 +317,13 @@ __process_generic_image() {
convert "${__source_file}" ${__convert_options[@]} "${__target}"
if [ "${!__img_convert_target_size}" == 'true' ] && [ "$(stat -c '%s' "${__target}")" -gt "${!__img_convert_target_size_bytes}" ] && ! [ "${!__img_convert_lossless}" == 'true' ]; then
echo "File too large, resizing"
rm "${__target}"
__convert_options+=("-define" "webp:target-size=${!__img_convert_target_size_bytes}" "-define" "webp:pass=8")
convert "${__source_file}" ${__convert_options[@]} "${__target}"
fi
fi
unset FILE_HASH
@ -312,11 +332,20 @@ __process_generic_image() {
}
########################################
# __process_scripts <-r>
########################################
#
# Process
# Call this to process scripts, or call
# with '-r' to check required programs
#
########################################
__process_scripts() {
__unset_unused SCRIPT
find './src/' -type f \( -iname \*.sh \) | while read -r __source_file; do
while read -r __source_file; do
export FILE_HASH="$(
{
@ -330,17 +359,36 @@ __process_scripts() {
if ! __check_file "${__source_file}" "$("${__source_file}" -t)"; then
echo "Running: ${__source_file}"
if [ "${1}" == '-r' ]; then
echo "$(__hash_env)" >"$(__get_hash_file "${__source_file}")"
while read -r __program; do
if ! which "${__program}" &>/dev/null; then
echo "$(pwd)${__source_file:1} needs '${__program}'"
export __fatal_error='true'
fi
done < <("${__source_file}" -r)
"${__source_file}"
else
echo "Running: ${__source_file}"
echo "$(__hash_env)" >"$(__get_hash_file "${__source_file}")"
__target_files="$("${__source_file}" -t)"
"${__source_file}"
while read -r __file; do
if ! [ -a "${__file}" ]; then
echo "Warning: $(pwd)${__source_file:1} failed to create ${__file}"
fi
done <<<"${__target_files}"
fi
fi
unset FILE_HASH
done
done < <(find './src/' -type f \( -iname \*.sh \))
}
@ -416,7 +464,7 @@ ${__targets}"
###############################################################################
__fatal_error_handler
__fatal_error_handler || exit 1
{

@ -1 +1 @@
Subproject commit ee7fed1bdb42d9bb1b54df2031b6879117b70e19
Subproject commit 8e511854538e10067f9d42cd5308b6910abe0f99

View file

@ -1,21 +0,0 @@
#!/bin/bash
git pull --recurse-submodules
if [ -d './static/images/reduced/' ]; then
rm -r './static/images/reduced/'
fi
if [ -d './static/images/generated/' ]; then
rm -r './static/images/generated/'
fi
find src -iname '*.sh' | while read -r __file; do
time ./${__file} "$(dirname "${__file}")/"
done
rm -r public
HUGO_ENV=production hugo --gc --minify
exit