0.0.6 • Published 5 years ago

inversify-commander-utils v0.0.6

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

Inversify Commander Utils

Join the chat at https://gitter.im/inversify/InversifyJS Build Status Coverage Status npm version Known Vulnerabilities

NPM NPM

Summary

The project assembles the functionality of two libraries: commander and inversifyjs. It represents the commander functionality in inversify way.

Installation

You can install inversify-commander-utils using npm:

npm install inversify inversify-commander-utils reflect-metadata --save

The inversify-commander-utils type definitions are included in the npm module and require TypeScript 2.0. Please refer to the InversifyJS documentation to learn more about the installation process.

Basics

Step 0: Imports for a tutorial below.

import 'reflect-metadata';
import {group, action, build, registerGroups} from 'inversify-commander-utils';
import {Container, inject, injectable} from 'inversify';
import program from 'commander';

Step 1: Define containers

@injectable()
class TodoContainer {
    public printPaper() {
        return 'Paper';
    }
}

Step 2: Define a group and actions

The group is represented as a container where we inject another container to. The injected container is available in actions of the group.

@group('printer')
class TestGroup {

    @inject(TodoContainer)
    public todoContainer!: TodoContainer;

    @action(
        'A <parameter>',
        [
            { pattern: '-c, --count <mode>', description: 'Number of prints.' }
        ]
    )
    public testA(parameter: string, command: any) {
        console.log(this.todoContainer.printPaper());
        console.log(parameter, command.count);
    }

}

Step 3: Assembling of all definitions

const container = new Container();
container.bind(TodoContainer).to(TodoContainer);
registerGroups(container);
build(program, container);

Step 4: Processing of arguments

commander
    .parse(process.argv);

Step 5: Run it from the console

node ./src/cli.js printer:A A4 -c 3

P.S.

InversifyJS is a very interesting library. We are developing a web application using the approach. At first we used InversifyJS utility alone. Later we checked a module inversify-express-utils, studied it better added some functionality. And we realized that this is a good example to wrap any module for our needs. This is used in our projects and it is being upgraded. Maybe another modules will also be wrapped.

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago