forked from extern/nushell
Add support for custom subcommands (#2814)
* Add support for custom subcommands * clippy
This commit is contained in:
parent
1e67ae8e94
commit
f22938fc4a
@ -2130,7 +2130,7 @@ fn parse_definition(call: &LiteCommand, scope: &dyn ParserScope) -> Option<Parse
|
|||||||
return Some(ParseError::mismatch("definition", call.parts[0].clone()));
|
return Some(ParseError::mismatch("definition", call.parts[0].clone()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let name = call.parts[1].item.clone();
|
let name = trim_quotes(&call.parts[1].item);
|
||||||
let (signature, err) = parse_signature(&name, &call.parts[2], scope);
|
let (signature, err) = parse_signature(&name, &call.parts[2], scope);
|
||||||
if err.is_some() {
|
if err.is_some() {
|
||||||
return err;
|
return err;
|
||||||
@ -2151,11 +2151,10 @@ fn parse_definition(call: &LiteCommand, scope: &dyn ParserScope) -> Option<Parse
|
|||||||
return err;
|
return err;
|
||||||
};
|
};
|
||||||
|
|
||||||
let name = &call.parts[1].item;
|
|
||||||
let (mut block, err) = classify_block(&lite_block, scope);
|
let (mut block, err) = classify_block(&lite_block, scope);
|
||||||
|
|
||||||
block.params = signature;
|
block.params = signature;
|
||||||
block.params.name = name.clone();
|
block.params.name = name;
|
||||||
|
|
||||||
scope.add_definition(block);
|
scope.add_definition(block);
|
||||||
|
|
||||||
@ -2181,7 +2180,7 @@ fn parse_definition_prototype(call: &LiteCommand, scope: &dyn ParserScope) -> Op
|
|||||||
return Some(ParseError::mismatch("definition", call.parts[0].clone()));
|
return Some(ParseError::mismatch("definition", call.parts[0].clone()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let name = call.parts[1].item.clone();
|
let name = trim_quotes(&call.parts[1].item);
|
||||||
let (signature, error) = parse_signature(&name, &call.parts[2], scope);
|
let (signature, error) = parse_signature(&name, &call.parts[2], scope);
|
||||||
if err.is_none() {
|
if err.is_none() {
|
||||||
err = error;
|
err = error;
|
||||||
|
@ -368,6 +368,18 @@ fn run_custom_command_with_flag_missing() {
|
|||||||
assert_eq!(actual.out, "empty");
|
assert_eq!(actual.out, "empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn run_custom_subcommand() {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: ".",
|
||||||
|
r#"
|
||||||
|
def "str double" [x] { echo $x $x | str collect }; str double bob
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(actual.out, "bobbob");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn set_variable() {
|
fn set_variable() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
Loading…
Reference in New Issue
Block a user