Skip to content

Commit

Permalink
Add a stub dfr command (nushell#10683)
Browse files Browse the repository at this point in the history
# Description
This will only display the list of subcommands.

Prompted by a question on Discord why completions may be missing.
With standard completion settings getting the subcommands doesn't seem
to be a problem but we could add this command for good measure.

# User-Facing Changes
New command `dfr` that does nothing apart from displaying the
subcommands and hogging a space in the completions

# Tests + Formatting
(-)
  • Loading branch information
sholderbach authored and hardfau1t committed Dec 14, 2023
1 parent 5098cfe commit 8bf2e55
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
2 changes: 2 additions & 0 deletions crates/nu-cmd-dataframe/src/dataframe/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ mod eager;
mod expressions;
mod lazy;
mod series;
mod stub;
mod utils;
mod values;

Expand All @@ -15,6 +16,7 @@ use nu_protocol::engine::{EngineState, StateWorkingSet};
pub fn add_dataframe_context(mut engine_state: EngineState) -> EngineState {
let delta = {
let mut working_set = StateWorkingSet::new(&engine_state);
working_set.add_decl(Box::new(stub::Dfr));
add_series_decls(&mut working_set);
add_eager_decls(&mut working_set);
add_expressions(&mut working_set);
Expand Down
47 changes: 47 additions & 0 deletions crates/nu-cmd-dataframe/src/dataframe/stub.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
use nu_engine::get_full_help;
use nu_protocol::ast::Call;
use nu_protocol::engine::{Command, EngineState, Stack};
use nu_protocol::{Category, IntoPipelineData, PipelineData, ShellError, Signature, Type, Value};

#[derive(Clone)]
pub struct Dfr;

impl Command for Dfr {
fn name(&self) -> &str {
"dfr"
}

fn usage(&self) -> &str {
"Operate with data in a dataframe format."
}

fn signature(&self) -> nu_protocol::Signature {
Signature::build("dfr")
.category(Category::Custom("dataframe".into()))
.input_output_types(vec![(Type::Nothing, Type::String)])
}

fn extra_usage(&self) -> &str {
"You must use one of the following subcommands. Using this command as-is will only produce this help message."
}

fn run(
&self,
engine_state: &EngineState,
stack: &mut Stack,
call: &Call,
_input: PipelineData,
) -> Result<PipelineData, ShellError> {
Ok(Value::string(
get_full_help(
&Dfr.signature(),
&Dfr.examples(),
engine_state,
stack,
self.is_parser_keyword(),
),
call.head,
)
.into_pipeline_data())
}
}

0 comments on commit 8bf2e55

Please sign in to comment.