mirror of
https://github.com/nushell/nushell.git
synced 2025-07-08 18:37:07 +02:00
Refactor scope
commands (#10023)
This commit is contained in:
@ -35,7 +35,7 @@ impl Command for ScopeAliases {
|
||||
let ctrlc = engine_state.ctrlc.clone();
|
||||
|
||||
let mut scope_data = ScopeData::new(engine_state, stack);
|
||||
scope_data.populate_all();
|
||||
scope_data.populate_decls();
|
||||
|
||||
Ok(scope_data.collect_aliases(span).into_pipeline_data(ctrlc))
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ impl Command for ScopeCommands {
|
||||
let ctrlc = engine_state.ctrlc.clone();
|
||||
|
||||
let mut scope_data = ScopeData::new(engine_state, stack);
|
||||
scope_data.populate_all();
|
||||
scope_data.populate_decls();
|
||||
|
||||
Ok(scope_data.collect_commands(span).into_pipeline_data(ctrlc))
|
||||
}
|
||||
|
@ -31,8 +31,7 @@ impl Command for ScopeEngineStats {
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let span = call.head;
|
||||
|
||||
let mut scope_data = ScopeData::new(engine_state, stack);
|
||||
scope_data.populate_all();
|
||||
let scope_data = ScopeData::new(engine_state, stack);
|
||||
|
||||
Ok(scope_data.collect_engine_state(span).into_pipeline_data())
|
||||
}
|
||||
|
62
crates/nu-cmd-lang/src/core_commands/scope/externs.rs
Normal file
62
crates/nu-cmd-lang/src/core_commands/scope/externs.rs
Normal file
@ -0,0 +1,62 @@
|
||||
use nu_engine::scope::ScopeData;
|
||||
use nu_protocol::ast::Call;
|
||||
use nu_protocol::engine::{Command, EngineState, Stack};
|
||||
use nu_protocol::{
|
||||
Category, Example, IntoInterruptiblePipelineData, PipelineData, ShellError, Signature, Type,
|
||||
};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ScopeExterns;
|
||||
|
||||
impl Command for ScopeExterns {
|
||||
fn name(&self) -> &str {
|
||||
"scope externs"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("scope externs")
|
||||
.input_output_types(vec![(Type::Nothing, Type::Any)])
|
||||
.allow_variants_without_examples(true)
|
||||
.category(Category::Filters)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Output info on the known externals in the current scope."
|
||||
}
|
||||
|
||||
fn run(
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
stack: &mut Stack,
|
||||
call: &Call,
|
||||
_input: PipelineData,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let span = call.head;
|
||||
let ctrlc = engine_state.ctrlc.clone();
|
||||
|
||||
let mut scope_data = ScopeData::new(engine_state, stack);
|
||||
scope_data.populate_decls();
|
||||
|
||||
Ok(scope_data.collect_externs(span).into_pipeline_data(ctrlc))
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![Example {
|
||||
description: "Show the known externals in the current scope",
|
||||
example: "scope externs",
|
||||
result: None,
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_examples() {
|
||||
use crate::test_examples;
|
||||
|
||||
test_examples(ScopeExterns {})
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ mod aliases;
|
||||
mod command;
|
||||
mod commands;
|
||||
mod engine_stats;
|
||||
mod externs;
|
||||
mod modules;
|
||||
mod variables;
|
||||
|
||||
@ -9,5 +10,6 @@ pub use aliases::*;
|
||||
pub use command::*;
|
||||
pub use commands::*;
|
||||
pub use engine_stats::*;
|
||||
pub use externs::*;
|
||||
pub use modules::*;
|
||||
pub use variables::*;
|
||||
|
@ -35,7 +35,7 @@ impl Command for ScopeVariables {
|
||||
let ctrlc = engine_state.ctrlc.clone();
|
||||
|
||||
let mut scope_data = ScopeData::new(engine_state, stack);
|
||||
scope_data.populate_all();
|
||||
scope_data.populate_vars();
|
||||
|
||||
Ok(scope_data.collect_vars(span).into_pipeline_data(ctrlc))
|
||||
}
|
||||
|
Reference in New Issue
Block a user