summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMatt Brictson <[email protected]>2024-08-24 14:16:59 -0700
committergit <[email protected]>2024-08-30 10:36:08 +0000
commit830ff66e2c7315470580dd8531f4c10b0200aed5 (patch)
treeea0db6f281dc3212d04e1703c23c8112da834dac /lib
parent08b92b67ffdfbfaf53974457308b719f6e2d0d24 (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.rb2
-rw-r--r--lib/bundler/ui/shell.rb12
-rw-r--r--lib/bundler/ui/silent.rb4
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