hubot-command
A library to let hubot parse commands and execute them in an easy manner.
Usage
In the hubot main folder's package.json:
There are two main classes: Command and Parameter.
A command has a name and has zero to many parameters. For each command you want hubot to be able to execute you will have to subclass a Command, and the many Parameters it has. Full usage details can be seen in the provided tests, but have a sample:
TestCommand.js
{ super'test'; this; this; thishelp = "A test command to prove that the library works"; } //Will be invoked by the execute command that the client uses, it's "private" to the class. { thismodelexecuted = true; return thismodel; //I could also return a [bluebird] promise, not only objects. } { //Validates that the from date is before the to date return thismodelfrom < thismodelto; }
FromParameter.js
{ super'from'command; thishelpheader = "when to start"; thishelpdetail = "From when to start the command. ISO8601 date format expected."; } { iftypeof date === 'undefined' || date === '' throw 'the "from" parameter cannot be empty'; thiscommandmodelfrom = date; }
Once you have the commands, you can use them in your hubot code, like so:
module{ robot;};
Implementation
The library is implemented as pure javascript, instead of CoffeeScript. Ecmascript 6 classes and arrow functions are used for OOP syntactic sugar, so a compatible nodejs runtime is needed (6.x+)
Bluebird is used for promise handling.
Tests are executed with mocha and asserts are using chai assert style, with a sprinkle of chai-as-promised. All integrated with npm, of course.