Show what a run is doing, and record when one is cut short
A run that held back a blocker then upgraded 214 packages printed one line and then nothing for nearly five minutes while pacman downloaded and installed. It looked hung, so it got killed - during pacman's uninterruptible commit phase, which meant the packages landed but our bookkeeping never did. The menu then kept showing a failure from a previous run on a fully up-to-date machine. pacman, the AUR helper and flatpak now stream their output when a person is watching, and the progress bar is left enabled for that case. Timer runs are unchanged: quiet, --noprogressbar, everything captured in the log. Interactivity is decided once at startup rather than tested at the point of use. cau_pacman_flags runs inside a process substitution, so its stdout is always a pipe and a -t 1 check there would have silently always been false. INT/TERM/HUP now record last_result=interrupted, so a run that is stopped says so instead of leaving the previous verdict standing.
This commit is contained in:
1 parent
9fd2458d20
commit
243115ea19
7 files changed
+68
-5
No files matched your search
+18
-2
@@ -91,7 +91,14 @@ cau_msg_in() {
|
||||
# Output and logging
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
if [[ -t 1 && -z ${NO_COLOR:-} ]]; then
|
||||
# Is a person watching? Decided once, here, while stdout is still whatever the
|
||||
# process was started with. Testing `-t 1` at the point of use is unreliable:
|
||||
# any function called through $(...) or <(...) sees a pipe on stdout and would
|
||||
# conclude nobody is there.
|
||||
CAU_INTERACTIVE=''
|
||||
[[ -t 1 ]] && CAU_INTERACTIVE=1
|
||||
|
||||
if [[ -n $CAU_INTERACTIVE && -z ${NO_COLOR:-} ]]; then
|
||||
CAU_C_RESET=$'\033[0m'
|
||||
CAU_C_BOLD=$'\033[1m'
|
||||
CAU_C_DIM=$'\033[2m'
|
||||
@@ -132,10 +139,19 @@ cau_log_open() {
|
||||
CAU_LOG_OPEN=1
|
||||
}
|
||||
|
||||
# Runs a command, streaming its combined output into the run log. Returns the
|
||||
# Runs a command, capturing its combined output in the run log. Returns the
|
||||
# command's exit status.
|
||||
#
|
||||
# When a person is watching - `cachy-auto-update run` from a terminal - the
|
||||
# output is shown as well. Building an AUR package or pulling a few hundred
|
||||
# megabytes of Flatpak can take minutes, and silence for that long is
|
||||
# indistinguishable from a hang.
|
||||
cau_run_logged() {
|
||||
if [[ -n ${CAU_LOG_OPEN:-} ]]; then
|
||||
if [[ -n $CAU_INTERACTIVE ]]; then
|
||||
"$@" 2>&1 | tee -a "$CAU_RUNLOG"
|
||||
return "${PIPESTATUS[0]}"
|
||||
fi
|
||||
"$@" >> "$CAU_RUNLOG" 2>&1
|
||||
else
|
||||
"$@" >&2
|
||||
|
||||
Reference in new issue
Block a user