UNPKG

@qodalis/angular-cli

Version:

A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.

74 lines 11.8 kB
import { Injectable } from '@angular/core'; import { miscProcessors } from '../processors'; import * as i0 from "@angular/core"; export class CliCommandProcessorRegistry { constructor() { this.processors = [...miscProcessors]; } registerProcessor(processor) { const existingProcessor = this.getProcessorByName(processor.command); if (existingProcessor) { if (existingProcessor.metadata?.sealed) { console.warn(`Processor with command: ${processor.command} is sealed and cannot be replaced.`); return; } const existingIndex = this.processors.findIndex((p) => p.command === processor.command); // Replace the existing processor this.processors[existingIndex] = processor; } else { this.processors.push(processor); } } unregisterProcessor(processor) { const existingProcessor = this.getProcessorByName(processor.command); if (existingProcessor) { if (existingProcessor.metadata?.sealed) { console.warn(`Processor with command: ${processor.command} is sealed and cannot be removed.`); return; } } const index = this.processors.findIndex((p) => p.command === processor.command); if (index !== -1) { this.processors.splice(index, 1); } } findProcessor(mainCommand, chainCommands) { return this.findProcessorInCollection(mainCommand, chainCommands, this.processors); } /** * Recursively searches for a processor matching the given command. * @param mainCommand The main command name. * @param chainCommands The remaining chain commands (if any). * @param processors The list of available processors. * @returns The matching processor or undefined if not found. */ findProcessorInCollection(mainCommand, chainCommands, processors) { const processor = processors.find((p) => p.command.toLowerCase() === mainCommand.toLowerCase()); if (!processor) { return undefined; } if (chainCommands.length === 0) { return processor; } if (processor.processors && processor.processors.length > 0) { return this.findProcessorInCollection(chainCommands[0], chainCommands.slice(1), processor.processors); } else if (processor.allowUnlistedCommands || processor.valueRequired) { return processor; } return undefined; } getRootProcessor(child) { return child.parent ? this.getRootProcessor(child.parent) : child; } getProcessorByName(name) { return this.processors.find((p) => p.command.toLowerCase() === name.toLowerCase()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandProcessorRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandProcessorRegistry }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandProcessorRegistry, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvbW1hbmQtcHJvY2Vzc29yLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL3NlcnZpY2VzL2NsaS1jb21tYW5kLXByb2Nlc3Nvci1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRy9DLE1BQU0sT0FBTywyQkFBMkI7SUFLcEM7UUFGZ0IsZUFBVSxHQUEyQixDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFFMUQsQ0FBQztJQUVULGlCQUFpQixDQUFDLFNBQStCO1FBQ3BELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRSxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FDUiwyQkFBMkIsU0FBUyxDQUFDLE9BQU8sb0NBQW9DLENBQ25GLENBQUM7Z0JBRUYsT0FBTzthQUNWO1lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQzNDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQ3pDLENBQUM7WUFFRixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDOUM7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFNBQStCO1FBQ3RELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVyRSxJQUFJLGlCQUFpQixFQUFFO1lBQ25CLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FDUiwyQkFBMkIsU0FBUyxDQUFDLE9BQU8sbUNBQW1DLENBQ2xGLENBQUM7Z0JBQ0YsT0FBTzthQUNWO1NBQ0o7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FDekMsQ0FBQztRQUVGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FDaEIsV0FBbUIsRUFDbkIsYUFBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQ2pDLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx5QkFBeUIsQ0FDNUIsV0FBbUIsRUFDbkIsYUFBdUIsRUFDdkIsVUFBa0M7UUFFbEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FDN0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUMvRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNaLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QixPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELElBQUksU0FBUyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQ2pDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEIsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDdEIsU0FBUyxDQUFDLFVBQVUsQ0FDdkIsQ0FBQztTQUNMO2FBQU0sSUFBSSxTQUFTLENBQUMscUJBQXFCLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUNuRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxnQkFBZ0IsQ0FDbkIsS0FBZ0M7UUFFaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEUsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQVk7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUN4RCxDQUFDO0lBQ04sQ0FBQzsrR0E3R1EsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIElDbGlDb21tYW5kQ2hpbGRQcm9jZXNzb3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3JSZWdpc3RyeSxcbn0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuaW1wb3J0IHsgbWlzY1Byb2Nlc3NvcnMgfSBmcm9tICcuLi9wcm9jZXNzb3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENsaUNvbW1hbmRQcm9jZXNzb3JSZWdpc3RyeVxuICAgIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3JSZWdpc3RyeVxue1xuICAgIHB1YmxpYyByZWFkb25seSBwcm9jZXNzb3JzOiBJQ2xpQ29tbWFuZFByb2Nlc3NvcltdID0gWy4uLm1pc2NQcm9jZXNzb3JzXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyByZWdpc3RlclByb2Nlc3Nvcihwcm9jZXNzb3I6IElDbGlDb21tYW5kUHJvY2Vzc29yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUHJvY2Vzc29yID0gdGhpcy5nZXRQcm9jZXNzb3JCeU5hbWUocHJvY2Vzc29yLmNvbW1hbmQpO1xuXG4gICAgICAgIGlmIChleGlzdGluZ1Byb2Nlc3Nvcikge1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nUHJvY2Vzc29yLm1ldGFkYXRhPy5zZWFsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgIGBQcm9jZXNzb3Igd2l0aCBjb21tYW5kOiAke3Byb2Nlc3Nvci5jb21tYW5kfSBpcyBzZWFsZWQgYW5kIGNhbm5vdCBiZSByZXBsYWNlZC5gLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLnByb2Nlc3NvcnMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChwKSA9PiBwLmNvbW1hbmQgPT09IHByb2Nlc3Nvci5jb21tYW5kLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgcHJvY2Vzc29yXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NvcnNbZXhpc3RpbmdJbmRleF0gPSBwcm9jZXNzb3I7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NvcnMucHVzaChwcm9jZXNzb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVucmVnaXN0ZXJQcm9jZXNzb3IocHJvY2Vzc29yOiBJQ2xpQ29tbWFuZFByb2Nlc3Nvcik6IHZvaWQge1xuICAgICAgICBjb25zdCBleGlzdGluZ1Byb2Nlc3NvciA9IHRoaXMuZ2V0UHJvY2Vzc29yQnlOYW1lKHByb2Nlc3Nvci5jb21tYW5kKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdQcm9jZXNzb3IpIHtcbiAgICAgICAgICAgIGlmIChleGlzdGluZ1Byb2Nlc3Nvci5tZXRhZGF0YT8uc2VhbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgUHJvY2Vzc29yIHdpdGggY29tbWFuZDogJHtwcm9jZXNzb3IuY29tbWFuZH0gaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgcmVtb3ZlZC5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnByb2Nlc3NvcnMuZmluZEluZGV4KFxuICAgICAgICAgICAgKHApID0+IHAuY29tbWFuZCA9PT0gcHJvY2Vzc29yLmNvbW1hbmQsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZFByb2Nlc3NvcihcbiAgICAgICAgbWFpbkNvbW1hbmQ6IHN0cmluZyxcbiAgICAgICAgY2hhaW5Db21tYW5kczogc3RyaW5nW10sXG4gICAgKTogSUNsaUNvbW1hbmRQcm9jZXNzb3IgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kUHJvY2Vzc29ySW5Db2xsZWN0aW9uKFxuICAgICAgICAgICAgbWFpbkNvbW1hbmQsXG4gICAgICAgICAgICBjaGFpbkNvbW1hbmRzLFxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzb3JzLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IHNlYXJjaGVzIGZvciBhIHByb2Nlc3NvciBtYXRjaGluZyB0aGUgZ2l2ZW4gY29tbWFuZC5cbiAgICAgKiBAcGFyYW0gbWFpbkNvbW1hbmQgVGhlIG1haW4gY29tbWFuZCBuYW1lLlxuICAgICAqIEBwYXJhbSBjaGFpbkNvbW1hbmRzIFRoZSByZW1haW5pbmcgY2hhaW4gY29tbWFuZHMgKGlmIGFueSkuXG4gICAgICogQHBhcmFtIHByb2Nlc3NvcnMgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHByb2Nlc3NvcnMuXG4gICAgICogQHJldHVybnMgVGhlIG1hdGNoaW5nIHByb2Nlc3NvciBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kUHJvY2Vzc29ySW5Db2xsZWN0aW9uKFxuICAgICAgICBtYWluQ29tbWFuZDogc3RyaW5nLFxuICAgICAgICBjaGFpbkNvbW1hbmRzOiBzdHJpbmdbXSxcbiAgICAgICAgcHJvY2Vzc29yczogSUNsaUNvbW1hbmRQcm9jZXNzb3JbXSxcbiAgICApOiBJQ2xpQ29tbWFuZFByb2Nlc3NvciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IHByb2Nlc3NvcnMuZmluZChcbiAgICAgICAgICAgIChwKSA9PiBwLmNvbW1hbmQudG9Mb3dlckNhc2UoKSA9PT0gbWFpbkNvbW1hbmQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXByb2Nlc3Nvcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFpbkNvbW1hbmRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9jZXNzb3IucHJvY2Vzc29ycyAmJiBwcm9jZXNzb3IucHJvY2Vzc29ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUHJvY2Vzc29ySW5Db2xsZWN0aW9uKFxuICAgICAgICAgICAgICAgIGNoYWluQ29tbWFuZHNbMF0sXG4gICAgICAgICAgICAgICAgY2hhaW5Db21tYW5kcy5zbGljZSgxKSxcbiAgICAgICAgICAgICAgICBwcm9jZXNzb3IucHJvY2Vzc29ycyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzc29yLmFsbG93VW5saXN0ZWRDb21tYW5kcyB8fCBwcm9jZXNzb3IudmFsdWVSZXF1aXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJvb3RQcm9jZXNzb3IoXG4gICAgICAgIGNoaWxkOiBJQ2xpQ29tbWFuZENoaWxkUHJvY2Vzc29yLFxuICAgICk6IElDbGlDb21tYW5kUHJvY2Vzc29yIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkLnBhcmVudCA/IHRoaXMuZ2V0Um9vdFByb2Nlc3NvcihjaGlsZC5wYXJlbnQpIDogY2hpbGQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcm9jZXNzb3JCeU5hbWUobmFtZTogc3RyaW5nKTogSUNsaUNvbW1hbmRQcm9jZXNzb3IgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzb3JzLmZpbmQoXG4gICAgICAgICAgICAocCkgPT4gcC5jb21tYW5kLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=