mirror of
https://github.com/nushell/nushell
synced 2024-12-26 13:03:07 +00:00
fixes which
showing aliases as built-in nushell commands (#9580)
fixes #8577 # Description Currently, using `which` on an alias describes it as a nushell built-in command: ```bash > alias foo = print "foo!" > which ls foo --all ╭───┬─────┬──────────────────────────┬──────────╮ │ # │ arg │ path │ built-in │ ├───┼─────┼──────────────────────────┼──────────┤ │ 0 │ ls │ Nushell built-in command │ true │ │ 1 │ ls │ /bin/ls │ false │ │ 2 │ foo │ Nushell built-in command │ true │ ╰───┴─────┴──────────────────────────┴──────────╯ ``` This PR fixes the behaviour above to the following: ```bash > alias foo = print "foo!" > which ls foo --all ╭───┬─────┬──────────────────────────┬──────────╮ │ # │ arg │ path │ built-in │ ├───┼─────┼──────────────────────────┼──────────┤ │ 0 │ ls │ Nushell built-in command │ true │ │ 1 │ ls │ /bin/ls │ false │ │ 2 │ foo │ Nushell alias │ false │ ╰───┴─────┴──────────────────────────┴──────────╯ ``` # User-Facing Changes Passing in an alias to `which` will no longer return `Nushell built-in command`, `true` for `path` and `built-in` respectively. # Tests + Formatting # After Submitting
This commit is contained in:
parent
8e38596bc9
commit
ad125abf6a
2 changed files with 15 additions and 0 deletions
|
@ -77,6 +77,8 @@ fn get_entry_in_commands(engine_state: &EngineState, name: &str, span: Span) ->
|
|||
if let Some(decl_id) = engine_state.find_decl(name.as_bytes(), &[]) {
|
||||
let (msg, is_builtin) = if engine_state.get_decl(decl_id).is_custom_command() {
|
||||
("Nushell custom command", false)
|
||||
} else if engine_state.get_decl(decl_id).is_alias() {
|
||||
("Nushell alias", false)
|
||||
} else {
|
||||
("Nushell built-in command", true)
|
||||
};
|
||||
|
|
|
@ -21,6 +21,19 @@ fn which_alias_ls() {
|
|||
assert_eq!(actual.out, "Nushell alias: ls -a");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn which_custom_alias() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
r#"alias foo = print "foo!"; which foo | to nuon"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
actual.out,
|
||||
"[[arg, path, built-in]; [foo, \"Nushell alias\", false]]"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn which_def_ls() {
|
||||
let actual = nu!(
|
||||
|
|
Loading…
Reference in a new issue