mirror of
https://github.com/nushell/nushell.git
synced 2025-05-09 01:12:59 +00:00
# Description Add custom command attributes. - Attributes are placed before a command definition and start with a `@` character. - Attribute invocations consist of const command call. The command's name must start with "attr ", but this prefix is not used in the invocation. - A command named `attr example` is invoked as an attribute as `@example` - Several built-in attribute commands are provided as part of this PR - `attr example`: Attaches an example to the commands help text ```nushell # Double numbers @example "double an int" { 5 | double } --result 10 @example "double a float" { 0.5 | double } --result 1.0 def double []: [number -> number] { $in * 2 } ``` - `attr search-terms`: Adds search terms to a command - ~`attr env`: Equivalent to using `def --env`~ - ~`attr wrapped`: Equivalent to using `def --wrapped`~ shelved for later discussion - several testing related attributes in `std/testing` - If an attribute has no internal/special purpose, it's stored as command metadata that can be obtained with `scope commands`. - This allows having attributes like `@test` which can be used by test runners. - Used the `@example` attribute for `std` examples. - Updated the std tests and test runner to use `@test` attributes - Added completions for attributes # User-Facing Changes Users can add examples to their own command definitions, and add other arbitrary attributes. # Tests + Formatting - 🟢 toolkit fmt - 🟢 toolkit clippy - 🟢 toolkit test - 🟢 toolkit test stdlib # After Submitting - Add documentation about the attribute syntax and built-in attributes - `help attributes` --------- Co-authored-by: 132ikl <132@ikl.sh>
74 lines
1.3 KiB
Rust
74 lines
1.3 KiB
Rust
mod alias;
|
|
mod attr;
|
|
mod break_;
|
|
mod collect;
|
|
mod const_;
|
|
mod continue_;
|
|
mod def;
|
|
mod describe;
|
|
mod do_;
|
|
mod echo;
|
|
mod error_make;
|
|
mod export;
|
|
mod export_alias;
|
|
mod export_const;
|
|
mod export_def;
|
|
mod export_extern;
|
|
mod export_module;
|
|
mod export_use;
|
|
mod extern_;
|
|
mod for_;
|
|
mod hide;
|
|
mod hide_env;
|
|
mod if_;
|
|
mod ignore;
|
|
mod let_;
|
|
mod loop_;
|
|
mod match_;
|
|
mod module;
|
|
mod mut_;
|
|
pub(crate) mod overlay;
|
|
mod return_;
|
|
mod scope;
|
|
mod try_;
|
|
mod use_;
|
|
mod version;
|
|
mod while_;
|
|
|
|
pub use alias::Alias;
|
|
pub use attr::*;
|
|
pub use break_::Break;
|
|
pub use collect::Collect;
|
|
pub use const_::Const;
|
|
pub use continue_::Continue;
|
|
pub use def::Def;
|
|
pub use describe::Describe;
|
|
pub use do_::Do;
|
|
pub use echo::Echo;
|
|
pub use error_make::ErrorMake;
|
|
pub use export::ExportCommand;
|
|
pub use export_alias::ExportAlias;
|
|
pub use export_const::ExportConst;
|
|
pub use export_def::ExportDef;
|
|
pub use export_extern::ExportExtern;
|
|
pub use export_module::ExportModule;
|
|
pub use export_use::ExportUse;
|
|
pub use extern_::Extern;
|
|
pub use for_::For;
|
|
pub use hide::Hide;
|
|
pub use hide_env::HideEnv;
|
|
pub use if_::If;
|
|
pub use ignore::Ignore;
|
|
pub use let_::Let;
|
|
pub use loop_::Loop;
|
|
pub use match_::Match;
|
|
pub use module::Module;
|
|
pub use mut_::Mut;
|
|
pub use overlay::*;
|
|
pub use return_::Return;
|
|
pub use scope::*;
|
|
pub use try_::Try;
|
|
pub use use_::Use;
|
|
pub use version::Version;
|
|
pub use while_::While;
|