gallows
v1.0.0
Published
Gallows is a lightweight command execution framework. It allows you to define a set of commands, each with their own validation, execution, and example. Commands can then be invoked with specified attributes and a body.
Downloads
122
Readme
Gallows
Gallows is a lightweight command execution framework. It allows you to define a set of commands, each with their own validation, execution, and example. Commands can then be invoked with specified attributes and a body.
Usage
To use Gallows, you define your commands, then execute them:
gallows([
// Define your commands here
]).execute(
// Execute commands here
)
Each command has the following properties:
name
: The name of the commandvalidate(attributes, body)
: A function that validates the command's attributes and bodyexecute(attributes, body)
: A function that executes the command with the provided attributes and body and returns the resultexample
: An object withattributes
andbody
properties, demonstrating how to use the commanddescription
: A description of what the command does
When executing commands, you provide the following arguments:
action
: The name of the command to executeattributes
: An object containing the attributes for the commandbody
: The body of the command
Here's an example of how to define and execute a command:
gallows([
{
name: 'echo',
validate: (attributes, body) => {
return body !== undefined;
},
execute: (attributes, body) => {
// Execute the 'echo' command with the provided body
return body;
},
example: {
attributes: {},
body: 'Hello, Gallows!'
},
description: 'Echoes the provided message'
}
]).execute(
'echo',
{},
'Hello, Gallows!'
)
The execute
function will return the result of the command.
Command Overloading
Gallows supports command overloading, which means that you can define multiple commands with the same name. When executing a command, the first command that passes the validate
function will be executed. This allows you to provide different implementations of the same command based on the provided attributes and body.
Here's an example of command overloading:
gallows([
{
name: 'echo',
validate: (attributes, body) => body !== undefined,
execute: (attributes, body) => body,
example: {
attributes: {},
body: 'Hello, Gallows!'
},
description: 'Echoes the provided message'
},
{
name: 'echo',
validate: (attributes, body) => attributes.message !== undefined,
execute: (attributes, body) => `Echo: ${attributes.message}`,
example: {
attributes: { message: 'Hello, world!' },
body: ''
},
description: 'Echoes the provided message'
}
]).execute(
'echo',
{ message: 'Hello, world!' },
''
)
In this example, the second echo
command will be executed, as its validate
function matches the provided attributes
.
Feel free to add more commands to your Gallows project!