Skip to content

When using .once -o, only last line remains #148

Closed
@mjpieters

Description

@mjpieters

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions