Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

cerebro-command-router

dubisdev34MIT2.0.0TypeScript support: included

Tool for CerebroApp developers that allows to work with subcommands

cerebro, cerebro-developer, command

readme

Cerebro-Command-Router

A tool for CerebroApp developers

What's cerebro-command-router?

This is a utility for developing cerebro plugins.

Install & Use

Install the package in your project:

npm install cerebro-command-router
or
yarn add cerebro-command-router

Initial configuration

Import the CerebroRouter utility:

import CerebroRouter from "cerebro-command-router";

//or

const CerebroRouter = require("cerebro-command-router");

Configure the router by creating an instance with:

  • command: string - The main command of your app (one word)
  • term: string - The complete string query (view Cerebro documentation)
  • display: function - The cerebro display function (view Cerebro documentation)
const myRouter = new CerebroRouter({
    command: "your_command_here",
    term,
    display,
});

Create the routes for your subcommands

/*
CerebroRouter.route(command: string,
            displayElement: see_cerebro_documentation,
            options: object)
*/

myRouter.route("your_first_subcommand", {
    icon: icon,
    title: `Your title here`,
    getPreview: () => <OneGreatReactComponent />,
});

myRouter.route("your_second_subcommand", {
    icon: icon,
    title: `Other title here too :)`,
    getPreview: () => <OtherGreatReactComponent />,
});

The "Options" object.

For now, you can configure one interesting parameter: the autocompletion when you use the tab key. By default, when the subcommand is written with subcommand text, if tab key is pressed nothing will happen (term = term), but if autocompleteAll: false the result when tab key is pressed will be only command + subcommand.

Example:

With autocompleteAll deafult (true):

command + subcommand + some text —> command + subcommand + some text

Text written by user

Untitled

tab key pressed Resultant text

Untitled

With autocompleteAll false:

command + subcommand + some text —> command + subcommand

Text written by user

Untitled

tab key pressed

Resultant text

Untitled

Invalid subcommand routing

You can choose whether to show a bad subcommand message or to show nothing. By default, nothing will simply appear. To display a message you can use CerebroRouter.invalidRoute(displayElement: see_cerebro_documentation)

myRouter.invalidRoute({
    icon: icon,
    title: `Invalid Command :( `,
});

Untitled

⚠️ This method must be at the end of the plugin (after all the normal subcommand routes)

Get the text of a subcommand so that you can work with it

Sometimes, to work with a subcommand, you will need to know the rest of the text that the user has written. For example, in the cerebro-todoist plugin, after the command "tds new << rest of text >>", the rest of the text is added to a note. To do this, you can use the "getSubCommandText" function that you can import from the package itself.

import { getSubCommandText } from "cerebro-command-router";

//or

const { getSubCommandText } = require("cerebro-command-router");

console.log(getSubCommandText("ex com1 text and emoji 💫")); //"text and emoji 💫"

Full Example

You can consult a complete example in the "Examples" folder. Another real example can be found in the cerebro-todoist plugin repository

License

MIT © Dubisdev