Shell Presets
How do you want to display your prompt?

Presets are the input style for a shell that can be customized to your liking by implementing a shell preset class.
Shell preset management
While ShellManager.GetLine() prompts for input, it decides which shell preset, PromptPresetBase, is used according to the list of presets, ShellPresets, that should make a new prompt preset class that you made for your shell.
CurrentPreset specifies the current PromptPresetBase class, which is usually found in the ShellPresets list. It usually calls the PromptPresetManager.CurrentPresets[ShellType] variable.
Setting a preset
PromptPresetManager.SetPreset() queries both the shell pre-defined presets, ShellPresets, and the custom presets, CustomShellPresets. After that, it sets the preset to the specified preset in the internal CurrentPresets.
Implementing a preset
Every preset must implement a base class, PromptPresetBase and IPromptPreset, as in below:
The only essential values that you must override in your shell preset class are:
PresetName: Read-only property. The shell preset name. If this preset is your first preset, it must beDefault.
PresetPrompt: Read-only property. Usually calls the overridable internal functionPresetPromptBuilder(). If it's simple, overriding it with a string is enough.
The first preset should implement a preset called Default in the ShellPresets dictionary.
Optional overridable properties
Optionally, these variables can be overridden:
PresetPromptCompletion: Read-only property. Usually calls the overridable internal functionPresetPromptCompletionBuilder(). If it's simple, overriding it with a string is enough.
PresetPromptShowcase: Read-only property. Usually calls the overridable internal functionPresetPromptBuilderShowcase(). If it's simple, overriding it with a string is enough.
PresetPromptCompletionShowcase: Read-only property. Usually calls the overridable internal functionPresetPromptCompletionBuilderShowcase(). If it's simple, overriding it with a string is enough.
Since the Showcase versions of the properties are meant to simulate how the preset would look in the real-world, you shouldn't try to access any external asset, especially those that the non-showcase properties use.
The easiest way to avoid using these assets is to make up things, such as database.sqlite for the SQL shell.
Last updated