fix: capture content written to stdout outside of report #2324
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds handling to capture everything written to
stdout
. Syft has a guarantee (maybe an implicit one, for now) that all the content written tostdout
is part of the report generated by the tool, such as ensuring JSON is valid JSON. Unfortunately, some libraries may write to stdout directly, such as this. In order to guarantee stdout only includes contents for the report, this PR captures this non-report output and trace logs it instead.NOTE: although this PR uses the
TRACE
logging level, the behavior with a TUI when set toWARN
would look like this: