Module: CLI::UI::StdoutRouter
- Defined in:
- lib/cli/ui/stdout_router.rb
Defined Under Namespace
Constant Summary collapse
- WRITE_WITHOUT_CLI_UI =
:write_without_cli_ui
- NotEnabled =
Class.new(StandardError)
Class Attribute Summary collapse
-
.duplicate_output_to ⇒ Object
Returns the value of attribute duplicate_output_to.
Class Method Summary collapse
- .assert_enabled! ⇒ Object
- .disable ⇒ Object
- .enable ⇒ Object
- .enabled?(stream = $stdout) ⇒ Boolean
-
.ensure_activated ⇒ Object
TODO: remove this.
- .with_enabled ⇒ Object
- .with_id(on_streams:) ⇒ Object
Class Attribute Details
.duplicate_output_to ⇒ Object
Returns the value of attribute duplicate_output_to.
8 9 10 |
# File 'lib/cli/ui/stdout_router.rb', line 8 def duplicate_output_to @duplicate_output_to end |
Class Method Details
.assert_enabled! ⇒ Object
169 170 171 |
# File 'lib/cli/ui/stdout_router.rb', line 169 def assert_enabled! raise NotEnabled unless enabled? end |
.disable ⇒ Object
196 197 198 199 200 201 |
# File 'lib/cli/ui/stdout_router.rb', line 196 def disable return false unless enabled?($stdout) && enabled?($stderr) deactivate($stdout) deactivate($stderr) true end |
.enable ⇒ Object
185 186 187 188 189 190 |
# File 'lib/cli/ui/stdout_router.rb', line 185 def enable return false if enabled?($stdout) || enabled?($stderr) activate($stdout, :stdout) activate($stderr, :stderr) true end |
.enabled?(stream = $stdout) ⇒ Boolean
192 193 194 |
# File 'lib/cli/ui/stdout_router.rb', line 192 def enabled?(stream = $stdout) stream.respond_to?(WRITE_WITHOUT_CLI_UI) end |
.ensure_activated ⇒ Object
TODO: remove this
181 182 183 |
# File 'lib/cli/ui/stdout_router.rb', line 181 def ensure_activated enable unless enabled? end |
.with_enabled ⇒ Object
173 174 175 176 177 178 |
# File 'lib/cli/ui/stdout_router.rb', line 173 def with_enabled enable yield ensure disable end |
.with_id(on_streams:) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/cli/ui/stdout_router.rb', line 149 def with_id(on_streams:) unless on_streams.is_a?(Array) && on_streams.all? { |s| s.respond_to?(:write) } raise ArgumentError, <<~EOF on_streams must be an array of objects that respond to `write` These do not respond to write #{on_streams.reject { |s| s.respond_to?(:write) }.map.with_index { |s| s.class.to_s }.join("\n")} EOF end require 'securerandom' id = format("%05d", rand(100)) Thread.current[:cliui_output_id] = { id: id, streams: on_streams } yield(id) ensure Thread.current[:cliui_output_id] = nil end |