loopback4-command
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

loopback4-command

Stability: ⚠️Experimental⚠️

Experimental packages provide early access to advanced or experimental functionality to get community feedback. Such modules are published to npm using 0.x.y versions. Their APIs and functionality may be subject to breaking changes in future releases.

Installation

Use the package manager npm to install loopback4-command

npm install --save loopback4-command

Basic use

Use the mixin

This module provides a mixin for your Application that enables convenience methods.

import {CommandMixin} from 'loopback4-command';

class MyApplication extends CommandMixin(Application) {}

Create command

We can now create an instance of Command.

import {command, Command} from 'loopback4-command';

// Create a command
@command({ name: 'dummy' })
export class DummyCommand extends Command {
  public async execute(args: string[]): Promise<void> {
    // Helper method provided by Command class
    await this
      .choice('question', 'Question?', ['Choice A', new Separator(), 'choice B'])
      .then((answers) => {
        console.log(JSON.stringify(answers, null, '  '))
      })
  }
}

This package is using Inquirer.js that let you interact with the command line interface

Add command script

To be able to run the commands, you will need to create a src/command.ts file containing the next script:

import {Application} from './application';

export const command = async () => {
  const app = new Application();
  await app.boot();
  await app.executeCommand(args);

  // Connectors usually keep a pool of opened connections,
  // this keeps the process running even after all work is done.
  // We need to exit explicitly.
  process.exit(0);
}

command().catch(err => {
  console.error('Cannot run command', err);
  process.exit(1);
})

Then you will need to add a new script inside your package.json file, like:

{
  "scripts": {
    "command": "node ./dist/command"
  }
}

Helpers

This package is providing helper method on to of Inquirer.js.

prompt

this.prompt([/* Pass your questions in here */])

See: https://github.com/SBoudrias/Inquirer.js#question

choice

this.choice('name', 'message', ['choice1', 'choice2'])

See: https://github.com/SBoudrias/Inquirer.js#list---type-list

checkbox

this.checkbox('name', 'message', ['choice1', 'choice2'])

Debug

To display debug messages from this package, you can use the next command:

DEBUG=loopback:command npm run command dummy

See: https://github.com/SBoudrias/Inquirer.js#checkbox---type-checkbox

Tests

Run npm test from the root folder.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

This project is licensed under the MIT

Package Sidebar

Install

npm i loopback4-command

Weekly Downloads

1

Version

0.2.0

License

MIT

Unpacked Size

34.7 kB

Total Files

47

Last publish

Collaborators

  • emulienfou