Compare commits

...

2 Commits

Author SHA1 Message Date
Jakub Klinkovský
4da854c526 Merge branch 'version-full-progress' into 'master'
feat(version): enhance version check spinner to progressively update the full pretty output

See merge request archlinux/devtools!313
2025-08-09 02:05:56 +00:00
Jakub Klinkovský
753d2daf65 feat(version): enhance version check spinner to progressively update the full pretty output
This way the spinner updates not only the Summary section, but also
Failure and Out-of-date which would otherwise be shown only at the end.

The implementation is kind of gross, but bash can't pass arrays to a
function 🤷
2025-04-26 22:53:53 +02:00

View File

@@ -140,6 +140,32 @@ pkgctl_version_check() {
pushd "${path}" >/dev/null
if [[ ${output_format} == pretty ]]; then
# initialize the tmp file for status output
section_separator=''
printf "" > "${status_dir}/tmp"
# update the current list of failed packages
if (( ${#failure[@]} > 0 )); then
exit_code=${PKGCTL_VERSION_CHECK_EXIT_FAILURE}
printf "%sFailure%s\n" "${section_separator}${BOLD}${UNDERLINE}" "${ALL_OFF}" >> "${status_dir}/tmp" 2>&1
section_separator=$'\n'
for result in "${failure[@]}"; do
msg_error " ${result}" >> "${status_dir}/tmp" 2>&1
done
fi
# update the current list of out-of-date packages
if (( ${#out_of_date[@]} > 0 )); then
exit_code=${PKGCTL_VERSION_CHECK_EXIT_OUT_OF_DATE}
printf "%sOut-of-date%s\n" "${section_separator}${BOLD}${UNDERLINE}" "${ALL_OFF}" >> "${status_dir}/tmp" 2>&1
section_separator=$'\n'
for result in "${out_of_date[@]}"; do
msg_warn " ${result}" >> "${status_dir}/tmp" 2>&1
done
fi
printf "%s" "${section_separator}" >> "${status_dir}/tmp"
# update the current terminal spinner status
(( ++current_item ))
pkgctl_version_check_spinner \
@@ -217,6 +243,9 @@ pkgctl_version_check() {
return 0
fi
# reset the section separator after loop
section_separator=''
if (( verbose )) && (( ${#up_to_date[@]} > 0 )); then
printf "%sUp-to-date%s\n" "${section_separator}${BOLD}${UNDERLINE}" "${ALL_OFF}"
section_separator=$'\n'
@@ -408,7 +437,7 @@ pkgctl_version_check_spinner() {
pkgctl_version_check_summary \
"${up_to_date_count}" \
"${out_of_date_count}" \
"${failure_count}" > "${tmp_file}"
"${failure_count}" >> "${tmp_file}"
# print the progress status
printf "📡 Checking: %s/%s [%s] %%spinner%%" \