diff options
author | Matt Brictson <[email protected]> | 2024-08-24 14:16:59 -0700 |
---|---|---|
committer | git <[email protected]> | 2024-08-30 10:36:08 +0000 |
commit | 830ff66e2c7315470580dd8531f4c10b0200aed5 (patch) | |
tree | ea0db6f281dc3212d04e1703c23c8112da834dac /lib | |
parent | 08b92b67ffdfbfaf53974457308b719f6e2d0d24 (diff) |
[rubygems/rubygems] Emit progress to stderr when `--parseable` is passed to `bundle outdated`
Before, `bundle outdated --parseable` (or `--porcelain`) caused output
to be completely silenced during definition resolution, so nothing was
printed at all until the table of outdated gems was printed.
With this change, `--parseable`/`--porcelain` now prints progress to
stderr during resolution. E.g.:
```
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
```
This provides a better user experience, especially when
`outdated --parseable` takes several seconds or more.
The report of outdated gems is still printed to stdout, and the exit
status codes are unchanged, so the fundamental contract with other tools
consuming the `outdated --parseable` result should not be affected.
https://github.com/rubygems/rubygems/commit/7d4bb43570
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bundler/cli/outdated.rb | 2 | ||||
-rw-r--r-- | lib/bundler/ui/shell.rb | 12 | ||||
-rw-r--r-- | lib/bundler/ui/silent.rb | 4 |
3 files changed, 17 insertions, 1 deletions
diff --git a/lib/bundler/cli/outdated.rb b/lib/bundler/cli/outdated.rb index ec42e631bb..64a83fd57e 100644 --- a/lib/bundler/cli/outdated.rb +++ b/lib/bundler/cli/outdated.rb @@ -54,7 +54,7 @@ module Bundler end if options[:parseable] - Bundler.ui.silence(&definition_resolution) + Bundler.ui.progress(&definition_resolution) else definition_resolution.call end diff --git a/lib/bundler/ui/shell.rb b/lib/bundler/ui/shell.rb index 32367a44f0..6df1512a5b 100644 --- a/lib/bundler/ui/shell.rb +++ b/lib/bundler/ui/shell.rb @@ -119,6 +119,10 @@ module Bundler with_level("silent", &blk) end + def progress(&blk) + with_output_stream(:stderr, &blk) + end + def unprinted_warnings [] end @@ -170,6 +174,14 @@ module Bundler ensure @level = original end + + def with_output_stream(symbol) + original = output_stream + self.output_stream = symbol + yield + ensure + @output_stream = original + end end end end diff --git a/lib/bundler/ui/silent.rb b/lib/bundler/ui/silent.rb index 9ca2a8b485..83d31d4b55 100644 --- a/lib/bundler/ui/silent.rb +++ b/lib/bundler/ui/silent.rb @@ -84,6 +84,10 @@ module Bundler yield end + def progress + yield + end + def unprinted_warnings @warnings end |