import {ContainerBlueprint, Instantiable, isInstantiableOf} from '../di' import {CommandLine} from './service' import {Directive} from './Directive' import {logIfDebugging} from '../util' /** * Register a class as a command-line Directive. * The class must extend Directive. * @constructor */ export const CLIDirective = (): ClassDecorator => { return (target) => { if ( isInstantiableOf(target, Directive) ) { logIfDebugging('extollo.cli.decorators', 'Registering CLIDirective blueprint:', target) ContainerBlueprint.getContainerBlueprint() .onResolve(CommandLine, (cli: CommandLine) => { cli.registerDirective(target as Instantiable) }) } else { logIfDebugging('extollo.cli.decorators', 'Skipping CLIDirective blueprint:', target) } } }