When using .once -o, only last line remains
mjpieters opened this issue · 2 comments
When using .once -o ...
, only the last line of the next output remains in the file once that command has completed.
That's because the write_once()
function is executed for each individual output line, and each time the output file is opened with a new open(**once_file)
call. Because the -o
sets the file mode to "w"
, the output file is truncated for each line, and so all preceding output is lost.
Either the write_once()
should execute once_file["mode"] = "a"
so further lines are appended instead of replacing the file, or the code should be refactored to work like the tee()
command and keep a reference to the opened file for re-use until unset_once_if_written()
is called (which would then close the file). With that second option, you could then also drop the written_to_once_file
flag variable, because the opened file object would only exist if there had been output to write.
Good catch. I'll check the implementation to see if I can refactor it. Thanks for reporting the bug.
Ping, is this still on your radar?