mirror of
https://github.com/nushell/nushell.git
synced 2025-08-14 23:22:32 +02:00
add attr category
@category
to custom command attributes (#15137)
# Description This PR adds the `@category` attribute to nushell for use with custom commands. ### Example Code ```nushell # Some example with category @category "math" @search-terms "addition" @example "add two numbers together" { blah 5 6 } --result 11 def blah [ a: int # First number to add b: int # Second number to add ] { $a + $b } ``` #### Source & Help ```nushell ❯ source blah.nu ❯ help blah Some example with category Search terms: addition Usage: > blah <a> <b> Flags: -h, --help: Display the help message for this command Parameters: a <int>: First number to add b <int>: Second number to add Input/output types: ╭─#─┬─input─┬─output─╮ │ 0 │ any │ any │ ╰───┴───────┴────────╯ Examples: add two numbers together > blah 5 6 11 ``` #### Show the category ```nushell ❯ help commands | where name == blah ╭─#─┬─name─┬─category─┬─command_type─┬────────description─────────┬─────params─────┬──input_output──┬─search_terms─┬─is_const─╮ │ 0 │ blah │ math │ custom │ Some example with category │ [table 3 rows] │ [list 0 items] │ addition │ false │ ╰───┴──────┴──────────┴──────────────┴────────────────────────────┴────────────────┴────────────────┴──────────────┴──────────╯ ``` # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. --> /cc @Bahex
This commit is contained in:
@ -113,6 +113,43 @@ impl std::fmt::Display for Category {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn category_from_string(category: &str) -> Category {
|
||||
match category {
|
||||
"bits" => Category::Bits,
|
||||
"bytes" => Category::Bytes,
|
||||
"chart" => Category::Chart,
|
||||
"conversions" => Category::Conversions,
|
||||
// Let's protect our own "core" commands by preventing scripts from having this category.
|
||||
"core" => Category::Custom("custom_core".to_string()),
|
||||
"database" => Category::Database,
|
||||
"date" => Category::Date,
|
||||
"debug" => Category::Debug,
|
||||
"default" => Category::Default,
|
||||
"deprecated" => Category::Deprecated,
|
||||
"removed" => Category::Removed,
|
||||
"env" => Category::Env,
|
||||
"experimental" => Category::Experimental,
|
||||
"filesystem" => Category::FileSystem,
|
||||
"filter" => Category::Filters,
|
||||
"formats" => Category::Formats,
|
||||
"generators" => Category::Generators,
|
||||
"hash" => Category::Hash,
|
||||
"history" => Category::History,
|
||||
"math" => Category::Math,
|
||||
"misc" => Category::Misc,
|
||||
"network" => Category::Network,
|
||||
"path" => Category::Path,
|
||||
"platform" => Category::Platform,
|
||||
"plugin" => Category::Plugin,
|
||||
"random" => Category::Random,
|
||||
"shells" => Category::Shells,
|
||||
"strings" => Category::Strings,
|
||||
"system" => Category::System,
|
||||
"viewers" => Category::Viewers,
|
||||
_ => Category::Custom(category.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
/// Signature information of a [`Command`]
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct Signature {
|
||||
|
Reference in New Issue
Block a user