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(), &[]) {
|
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() {
|
let (msg, is_builtin) = if engine_state.get_decl(decl_id).is_custom_command() {
|
||||||
("Nushell custom command", false)
|
("Nushell custom command", false)
|
||||||
|
} else if engine_state.get_decl(decl_id).is_alias() {
|
||||||
|
("Nushell alias", false)
|
||||||
} else {
|
} else {
|
||||||
("Nushell built-in command", true)
|
("Nushell built-in command", true)
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,6 +21,19 @@ fn which_alias_ls() {
|
||||||
assert_eq!(actual.out, "Nushell alias: ls -a");
|
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]
|
#[test]
|
||||||
fn which_def_ls() {
|
fn which_def_ls() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
|
Loading…
Reference in a new issue