diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-13 10:15:20 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-13 10:15:20 +0300 |
| commit | d4971998edae804c39797486be7a342d43e61e5c (patch) | |
| tree | 830c008847704b40b7f45d4c7c620beed03958d6 /src/lib/image.source.sh | |
| parent | e9437367b8fc7a4cb0ffed6c0a8ba89356a3b9ad (diff) | |
Refactor helper modules for im0
Diffstat (limited to 'src/lib/image.source.sh')
| -rw-r--r-- | src/lib/image.source.sh | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/src/lib/image.source.sh b/src/lib/image.source.sh index 568ab62..c190b87 100644 --- a/src/lib/image.source.sh +++ b/src/lib/image.source.sh @@ -80,144 +80,6 @@ scalephotos() { fi } -wait_for_parallel_job_pid() { - local -r pid="$1"; shift - local -i status=0 - - set +e - wait "$pid" - status=$? - set -e - - return "$status" -} - -parallel_job_pid_is_running() { - local -r pid="$1"; shift - local running_pid - - for running_pid in "$@"; do - if [ "$running_pid" = "$pid" ]; then - return 0 - fi - done - - return 1 -} - -reap_finished_parallel_jobs() { - local -r job_pids_name="$1"; shift - # shellcheck disable=SC2178 - local -n job_pids_ref="$job_pids_name" - local -n failed_ref="$1"; shift - local -i reaped_status="$1"; shift - local -i has_reaped_status=1 - local -i status=0 - local -a remaining_pids=() - local -a running_pids=() - local pid - - mapfile -t running_pids < <(jobs -rp) - - for pid in "${job_pids_ref[@]}"; do - if parallel_job_pid_is_running "$pid" "${running_pids[@]}"; then - remaining_pids+=("$pid") - continue - fi - - if wait_for_parallel_job_pid "$pid"; then - status=0 - else - status=$? - fi - if (( status == 127 && has_reaped_status != 0 )); then - status=$reaped_status - has_reaped_status=0 - fi - - if (( status != 0 )); then - failed_ref=1 - fi - done - - job_pids_ref=("${remaining_pids[@]}") -} - -wait_for_next_parallel_job() { - local -r job_pids_name="$1"; shift - local -r failed_name="$1"; shift - # shellcheck disable=SC2178 - local -n job_pids_ref="$job_pids_name" - local -i status=0 - - set +e - wait -n "${job_pids_ref[@]}" - status=$? - set -e - - reap_finished_parallel_jobs "$job_pids_name" "$failed_name" "$status" -} - -wait_for_parallel_job_slot() { - local -r job_pids_name="$1"; shift - local -r failed_name="$1"; shift - local -r max_jobs="$1"; shift - # shellcheck disable=SC2178 - local -n job_pids_ref="$job_pids_name" - - while (( ${#job_pids_ref[@]} >= max_jobs )); do - wait_for_next_parallel_job "$job_pids_name" "$failed_name" - done -} - -wait_for_parallel_jobs() { - # shellcheck disable=SC2178 - local -n job_pids_ref="$1"; shift - local -n failed_ref="$1"; shift - - : "$failed_ref" - while (( ${#job_pids_ref[@]} > 0 )); do - if ! wait_for_parallel_job_pid "${job_pids_ref[0]}"; then - failed_ref=1 - fi - job_pids_ref=("${job_pids_ref[@]:1}") - done -} - -wait_for_image_job_slot() { - local -r image_job_pids_name="$1"; shift - local -r failed_name="$1"; shift - - wait_for_parallel_job_slot \ - "$image_job_pids_name" \ - "$failed_name" \ - "$IMAGE_JOBS" -} - -wait_for_image_jobs() { - local -r image_job_pids_name="$1"; shift - local -r failed_name="$1"; shift - - wait_for_parallel_jobs "$image_job_pids_name" "$failed_name" -} - -wait_for_template_render_job_slot() { - local -r render_job_pids_name="$1"; shift - local -r failed_name="$1"; shift - - wait_for_parallel_job_slot \ - "$render_job_pids_name" \ - "$failed_name" \ - "$IMAGE_JOBS" -} - -wait_for_template_render_jobs() { - local -r render_job_pids_name="$1"; shift - local -r failed_name="$1"; shift - - wait_for_parallel_jobs "$render_job_pids_name" "$failed_name" -} - scale_photo() { local -r photo="$1"; shift local destphoto @@ -248,78 +110,3 @@ scale_photo() { "$destphoto" fi } - -random_seed_is_set() { - [ -n "$RANDOM_SEED" ] -} - -deterministic_index() { - local -r namespace="$1"; shift - local -r count="$1"; shift - local checksum - - checksum=$(printf '%s' "${RANDOM_SEED}:$namespace" | cksum) - checksum=${checksum%% *} - - printf '%s\n' $(( checksum % count )) -} - -random_index() { - local -r namespace="$1"; shift - local -r count="$1"; shift - - if random_seed_is_set; then - deterministic_index "$namespace" "$count" - else - printf '%s\n' $(( RANDOM % count )) - fi -} - -random_animation_css_class() { - local -r speed="$1"; shift - local -r context="${1:-$speed}" - local -i index - local -a classes=( - "animate-opacity-$speed" - "animate-top-$speed" - "animate-left-$speed" - "animate-right-$speed" - "animate-bottom-$speed" - "animate-zoom-$speed" - "animate-snap-rotate-$speed" - "animate-hard-zoom-$speed" - "animate-slam-left-$speed" - "animate-slam-right-$speed" - "animate-flash-in-$speed" - "animate-invert-pop-$speed" - "animate-posterize-pop-$speed" - "animate-skew-snap-$speed" - "animate-glitch-step-$speed" - ) - - index=$(random_index "animation:$speed:$context" "${#classes[@]}") - printf '%s\n' "${classes[index]}" -} - -deterministic_shuffle() { - local checksum - local line - - while IFS= read -r line; do - checksum=$(printf '%s' "${RANDOM_SEED}:shuffle:$line" | cksum) - checksum=${checksum%% *} - printf '%010u\t%s\n' "$checksum" "$line" - done | sort -n -k1,1 -k2,2 | cut -f2- -} - -maybe_shuffle() { - if [ "$SHUFFLE" = yes ]; then - if random_seed_is_set; then - deterministic_shuffle - else - sort -R - fi - else - sort - fi -} |
