mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 22:50:14 +02:00
make std help more user friendly
This commit is contained in:
@ -684,8 +684,7 @@ def build-command-page [command: record] {
|
|||||||
] | flatten | str join "\n"
|
] | flatten | str join "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show help on commands.
|
def scope-commands [
|
||||||
export def commands [
|
|
||||||
...command: string@"nu-complete list-commands" # the name of command to get help on
|
...command: string@"nu-complete list-commands" # the name of command to get help on
|
||||||
--find (-f): string # string to find in command names and description
|
--find (-f): string # string to find in command names and description
|
||||||
] {
|
] {
|
||||||
@ -699,20 +698,35 @@ export def commands [
|
|||||||
let found_command = ($commands | where name == $target_command)
|
let found_command = ($commands | where name == $target_command)
|
||||||
|
|
||||||
if ($found_command | is-empty) {
|
if ($found_command | is-empty) {
|
||||||
try {
|
command-not-found-error (metadata $command | get span)
|
||||||
print $"(ansi default_italic)Help pages from external command ($target_command | pretty-cmd):(ansi reset)"
|
} else {
|
||||||
^($env.NU_HELPER? | default "man") $target_command
|
build-command-page ($found_command | get 0)
|
||||||
} catch {
|
|
||||||
command-not-found-error (metadata $command | get span)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build-command-page ($found_command | get 0)
|
|
||||||
} else {
|
} else {
|
||||||
$commands | select name category description signatures search_terms
|
$commands | select name category description signatures search_terms
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def external-commands [
|
||||||
|
...command: string@"nu-complete list-commands",
|
||||||
|
] {
|
||||||
|
let target_command = $command | str join " "
|
||||||
|
print $"(ansi default_italic)Help pages from external command ($target_command | pretty-cmd):(ansi reset)"
|
||||||
|
^($env.NU_HELPER? | default "man") $target_command
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show help on commands.
|
||||||
|
export def commands [
|
||||||
|
...command: string@"nu-complete list-commands" # the name of command to get help on
|
||||||
|
--find (-f): string # string to find in command names and description
|
||||||
|
] {
|
||||||
|
try {
|
||||||
|
scope-commands ...$command --find=$find
|
||||||
|
} catch {
|
||||||
|
external-commands ...$command
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def pretty-cmd [] {
|
def pretty-cmd [] {
|
||||||
let cmd = $in
|
let cmd = $in
|
||||||
$"(ansi default_dimmed)(ansi default_italic)($cmd)(ansi reset)"
|
$"(ansi default_dimmed)(ansi default_italic)($cmd)(ansi reset)"
|
||||||
@ -763,7 +777,7 @@ You can also learn more at (ansi default_italic)(ansi light_cyan_underline)https
|
|||||||
|
|
||||||
let target_item = ($item | str join " ")
|
let target_item = ($item | str join " ")
|
||||||
|
|
||||||
let commands = (try { commands $target_item --find $find })
|
let commands = (try { scope-commands $target_item --find $find })
|
||||||
if not ($commands | is-empty) { return $commands }
|
if not ($commands | is-empty) { return $commands }
|
||||||
|
|
||||||
let aliases = (try { aliases $target_item --find $find })
|
let aliases = (try { aliases $target_item --find $find })
|
||||||
@ -776,13 +790,7 @@ You can also learn more at (ansi default_italic)(ansi light_cyan_underline)https
|
|||||||
print -e $"No help results found mentioning: ($find)"
|
print -e $"No help results found mentioning: ($find)"
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
# use external tool (e.g: `man`) to search help for $target_item
|
||||||
let span = (metadata $item | get span)
|
# the stdout and stderr of external tool will follow `main` call.
|
||||||
error make {
|
external-commands $target_item
|
||||||
msg: ("std::help::item_not_found" | error-fmt)
|
|
||||||
label: {
|
|
||||||
text: "item not found"
|
|
||||||
span: $span
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user