Skip to main content

nu_command/filesystem/idx/
dirs.rs

1use super::state::stream_dirs;
2use nu_engine::command_prelude::*;
3#[derive(Clone)]
4pub struct IdxDirs;
5
6impl Command for IdxDirs {
7    fn name(&self) -> &str {
8        "idx dirs"
9    }
10
11    fn signature(&self) -> Signature {
12        Signature::build(self.name())
13            .optional(
14                "query",
15                SyntaxShape::String,
16                "Optional fuzzy query to filter indexed directories.",
17            )
18            .input_output_types(vec![(Type::Nothing, Type::List(Box::new(Type::record())))])
19            .category(Category::FileSystem)
20    }
21
22    fn description(&self) -> &str {
23        "List indexed directories, or fuzzy-match directories by query."
24    }
25
26    fn examples(&self) -> Vec<Example<'_>> {
27        vec![
28            Example {
29                description: "List all indexed directories",
30                example: "idx dirs",
31                result: None,
32            },
33            Example {
34                description: "Fuzzy-match indexed directories by query",
35                example: "idx dirs src",
36                result: None,
37            },
38        ]
39    }
40
41    fn run(
42        &self,
43        engine_state: &EngineState,
44        stack: &mut Stack,
45        call: &Call,
46        _input: PipelineData,
47    ) -> Result<PipelineData, ShellError> {
48        let query = call.opt::<String>(engine_state, stack, 0)?;
49        let signals = engine_state.signals();
50        stream_dirs(query, call.head, signals)
51    }
52}