From d80960fce0509726d4d08dfb295b1cb3b37ae167 Mon Sep 17 00:00:00 2001 From: juvdiaz Date: Wed, 1 Jul 2026 14:27:42 -0600 Subject: [PATCH] Reduce duplicate Jeannie progress repaints --- jeannie | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/jeannie b/jeannie index f8874a1..a765cbb 100755 --- a/jeannie +++ b/jeannie @@ -823,13 +823,8 @@ jeannie_step_progress() { local description="$1" local step_log="$2" local started_at="$3" + local last_line="${4:-}" local elapsed=$((SECONDS - started_at)) - local last_line="" - - if [[ -s "${step_log}" ]]; then - last_line="$(tail -n 1 "${step_log}" 2>/dev/null || true)" - last_line="$(jeannie_compact_text "${last_line}" 88)" - fi printf '\r' jeannie_step_prefix "${description}" @@ -841,6 +836,17 @@ jeannie_step_progress() { printf '\033[K' } +jeannie_step_latest_progress_line() { + local step_log="$1" + local last_line="" + + if [[ -s "${step_log}" ]]; then + last_line="$(tail -n 1 "${step_log}" 2>/dev/null || true)" + last_line="$(jeannie_compact_text "${last_line}" 88)" + fi + printf '%s' "${last_line}" +} + redact_sensitive_output() { sed -E \ -e 's/(GITEA_BOOTSTRAP_PASSWORD=)["'\'']?[^"'\''[:space:]]+["'\'']?/\1[REDACTED]/g' \ @@ -862,6 +868,9 @@ run_step() { local progress_pid local progress_interval="${JEANNIE_PROGRESS_INTERVAL_SECONDS:-10}" local started_at + local current_progress_line="" + local last_progress_line="" + local last_progress_rendered_at=0 shift JEANNIE_STEP_INDEX=$((JEANNIE_STEP_INDEX + 1)) @@ -894,7 +903,13 @@ run_step() { while kill -0 "${progress_pid}" >/dev/null 2>&1; do sleep "${progress_interval}" if kill -0 "${progress_pid}" >/dev/null 2>&1; then - jeannie_step_progress "${description}" "${step_log}" "${started_at}" + current_progress_line="$(jeannie_step_latest_progress_line "${step_log}")" + if [[ "${current_progress_line}" != "${last_progress_line}" ]] || + ((SECONDS - last_progress_rendered_at >= 60)); then + jeannie_step_progress "${description}" "${step_log}" "${started_at}" "${current_progress_line}" + last_progress_line="${current_progress_line}" + last_progress_rendered_at="${SECONDS}" + fi fi done wait "${progress_pid}" || true