Added cancelling to the wiki.

That_One_Nerd 2023-04-01 14:39:34 -04:00
parent 270a0681a0
commit 89373c22ae

@ -2,7 +2,7 @@
Commands are methods inside a [module](Modules) that the shell will execute when a command that fits its module ID (if applicable) and name ID is run. A command can have as many parameters as required and the types for those parameters vary. Commands are methods inside a [module](Modules) that the shell will execute when a command that fits its module ID (if applicable) and name ID is run. A command can have as many parameters as required and the types for those parameters vary.
## How to Use ## How to Use
Commands must be in a [module](Modules) to be recognized. Any commands not inside their respective modules will be ignored. Commands are declared by applying the `CommandAttribute` attribute in the namespace `SrcMod.Shell.Modules.ObjectModels` to a method. The method can be static. The return type must be `void` and all parameters must have the following types: Commands must be in a [module](Modules) to be recognized. Any commands not inside their respective modules will be ignored. Commands are declared by applying the `CommandAttribute` attribute in the namespace `SrcMod.Shell.Modules.ObjectModels` to a method. The method can be static and must always have a body. The return type must be `void` and all parameters must have the following types:
| Type | | Type |
|-| |-|
@ -26,6 +26,7 @@ Commands must be in a [module](Modules) to be recognized. Any commands not insid
| `System.DateOnly` | | `System.DateOnly` |
| `System.DateTime` | | `System.DateTime` |
| `System.DateTimeOffset` | | `System.DateTimeOffset` |
| `System.Enum` |
| `System.Guid` | | `System.Guid` |
| `System.TimeOnly` | | `System.TimeOnly` |
| `System.TimeSpan` | | `System.TimeSpan` |
@ -62,12 +63,46 @@ public static class ExampleModule2
[Command("test")] [Command("test")]
public static void ExampleCommand() public static void ExampleCommand()
{ {
// Invoked by executing "example command" *or* // Invoked by executing "example command" or
// "example test" // "example test"
} }
} }
``` ```
SrcMod allows the user to terminate commands prematurely by pressing the terminal cancel key (Ctrl+C or Ctrl+Break on Windows Terminal). However, this can be overriden by adding the `CanCancelAttribute` attribute to your command. The attribute takes in a boolean that represents whether it can be cancelled or not. A value of `true` means it can be cancelled. If a `CanCancelAttribute` attribute is not provided, it is assumed that the command *does* support cancelling.
Here is an example:
```csharp
// Used for the `CommandAttribute` and `ModuleAttribute`.
using SrcMod.Shell.Modules.ObjectModels;
[Module("example")]
public static class ExampleModule3
{
[Command("command1")]
public static void ExampleCommandA()
{
// This command CAN be cancelled.
}
[Command("command2")]
[CanCancel(false)]
public static void ExampleCommandB()
{
// This command CANNOT be cancelled.
}
[Command("command3")]
[CanCancel(true)]
public static void ExampleCommandC()
{
// This command CAN be cancelled.
}
}
```
If a user of the shell attempts to cancel a command that does not support cancelling, an error sound will play.
--- ---
## Default Commands ## Default Commands