A typescript decorator based wrapper for commanderjs
npm install commander.js-decorated
npm install commander.js-decorated
`Command Groups
Command Groups can be used to containerize a group of commands.
Let's start by creating a simple CommandGroup.`
import { CommandGroup, Command } from 'commander.js-decorated';
import { program } from 'commander.js';
// If no name is specified, it'll convert the class name to kebab case and uses that
@CommandGroup(name?: string)
class Bucket {
// If no name is specified, it'll convert the method name to kebab case and uses that
@Command(name?: string)
add() {
console.log('Added!');
}
@Command()
remove() {
console.log('Removed!');
}
}
// Now (Bucket as any).toCommand(); will give you a commander.js Command that you can add to your existing commander.js setup.
program.add((Bucket as any).toCommand());
`Options
Option flags can be added with a decorator to each command:`
import { CommandGroup, Command, Option } from 'commander.js-decorated';
import { program } from 'commander.js';@CommandGroup()
class Bucket {
@Command()
@Option('--env', 'name of the environment')
@Option('--foo [value]', 'some description', { validValues : [ 'bar', 'lorem' ] })
add({ env, foo } = {}) {
console.log('Added with env as: ' + env);
}
@Command()
remove() {
console.log('Removed!');
}
}
`Arguments
Arguments follow the same syntax as commander.js Argument. `
import { CommandGroup, Command, Option } from 'commander.js-decorated';
import { program } from 'commander.js';@CommandGroup()
class Bucket {
@Command()
@Option('--verbose')
@Argument('[arg2...]', 'description')
@Argument('', 'description', { validValues : [ 'foo', 'bar' ] })
add() {
console.log('Removed!');
}
}
``Note that decorators are ordered from bottom -> top meaning the lower @Argument will be added first then the upper @Argument.
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.