mirror of
https://github.com/nushell/nushell.git
synced 2025-08-16 16:41:41 +02:00
Add and use new Signals
struct (#13314)
# Description This PR introduces a new `Signals` struct to replace our adhoc passing around of `ctrlc: Option<Arc<AtomicBool>>`. Doing so has a few benefits: - We can better enforce when/where resetting or triggering an interrupt is allowed. - Consolidates `nu_utils::ctrl_c::was_pressed` and other ad-hoc re-implementations into a single place: `Signals::check`. - This allows us to add other types of signals later if we want. E.g., exiting or suspension. - Similarly, we can more easily change the underlying implementation if we need to in the future. - Places that used to have a `ctrlc` of `None` now use `Signals::empty()`, so we can double check these usages for correctness in the future.
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
use nu_plugin::*;
|
||||
use nu_plugin_test_support::PluginTest;
|
||||
use nu_protocol::{
|
||||
Example, IntoInterruptiblePipelineData, LabeledError, PipelineData, ShellError, Signature,
|
||||
Span, Type, Value,
|
||||
Example, IntoInterruptiblePipelineData, LabeledError, PipelineData, ShellError, Signals,
|
||||
Signature, Span, Type, Value,
|
||||
};
|
||||
|
||||
struct LowercasePlugin;
|
||||
@ -53,7 +53,7 @@ impl PluginCommand for Lowercase {
|
||||
// Errors in a stream should be returned as values.
|
||||
.unwrap_or_else(|err| Value::error(err, span))
|
||||
},
|
||||
None,
|
||||
&Signals::empty(),
|
||||
)?)
|
||||
}
|
||||
}
|
||||
@ -72,7 +72,8 @@ impl Plugin for LowercasePlugin {
|
||||
fn test_lowercase_using_eval_with() -> Result<(), ShellError> {
|
||||
let result = PluginTest::new("lowercase", LowercasePlugin.into())?.eval_with(
|
||||
"lowercase",
|
||||
vec![Value::test_string("HeLlO wOrLd")].into_pipeline_data(Span::test_data(), None),
|
||||
vec![Value::test_string("HeLlO wOrLd")]
|
||||
.into_pipeline_data(Span::test_data(), Signals::empty()),
|
||||
)?;
|
||||
|
||||
assert_eq!(
|
||||
|
Reference in New Issue
Block a user