@qodalis/angular-cli
Version:
A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.
70 lines • 9.61 kB
JavaScript
import { DefaultLibraryAuthor, } from '@qodalis/cli-core';
import { CliProcessorsRegistry_TOKEN } from '../../tokens';
export class CliAliasCommandProcessor {
constructor() {
this.command = 'alias';
this.author = DefaultLibraryAuthor;
this.description = 'Manage aliases for commands';
this.metadata = {
icon: '🔥',
module: 'misc',
sealed: true,
};
this.stateConfiguration = {
initialState: {
aliases: {},
},
storeName: 'aliases',
};
this.aliases = {};
this.processors = [
{
command: 'ls',
description: 'List all aliases',
processCommand: async (_, context) => {
const { writer } = context;
writer.writeln('Aliases:');
Object.entries(this.aliases).forEach(([alias, command]) => {
writer.writeInfo(` ${alias} -> ${command}`);
});
if (Object.keys(this.aliases).length === 0) {
writer.writeInfo(' No aliases defined');
}
},
},
];
}
async processCommand(command, context) {
const registry = context.services.get(CliProcessorsRegistry_TOKEN);
const { writer } = context;
const aliases = Object.keys(command.args);
if (aliases.length === 0) {
writer.writeError('No aliases provided');
context.process.exit(-1);
return;
}
for (const alias of aliases) {
if (registry.processors.some((p) => p.command === alias)) {
writer.writeError(`${alias} cannot be aliased to ${command.args[alias]}`);
context.process.exit(-1);
return;
}
context.writer.writeInfo(`${alias} -> ${command.args[alias]}`);
}
context.state.updateState({
aliases: {
...this.aliases,
...command.args,
},
});
await context.state.persist();
}
async initialize(context) {
context.state
.select((x) => x['aliases'])
.subscribe((aliases) => {
this.aliases = aliases ?? {};
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWFsaWFzLWNvbW1hbmQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL3Byb2Nlc3NvcnMvbWlzYy9jbGktYWxpYXMtY29tbWFuZC1wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILG9CQUFvQixHQUl2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxNQUFNLE9BQU8sd0JBQXdCO0lBd0JqQztRQXZCQSxZQUFPLEdBQUcsT0FBTyxDQUFDO1FBRWxCLFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUU5QixnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBSTVDLGFBQVEsR0FBc0M7WUFDMUMsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVGLHVCQUFrQixHQUF1QztZQUNyRCxZQUFZLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLEVBQUU7YUFDZDtZQUNELFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7UUFFSyxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUd4QyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2Q7Z0JBQ0ksT0FBTyxFQUFFLElBQUk7Z0JBQ2IsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7b0JBRTNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7d0JBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLE9BQU8sT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUN4QyxNQUFNLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7cUJBQzVDO2dCQUNMLENBQUM7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDdkIsT0FBMEIsRUFDMUIsT0FBNkI7UUFFN0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ2pDLDJCQUEyQixDQUM5QixDQUFDO1FBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE9BQU87U0FDVjtRQUVELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFO1lBQ3pCLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ3RELE1BQU0sQ0FBQyxVQUFVLENBQ2IsR0FBRyxLQUFLLHlCQUF5QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3pELENBQUM7Z0JBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsT0FBTzthQUNWO1lBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEU7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ0wsR0FBRyxJQUFJLENBQUMsT0FBTztnQkFDZixHQUFHLE9BQU8sQ0FBQyxJQUFJO2FBQ2xCO1NBQ0osQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQTZCO1FBQzFDLE9BQU8sQ0FBQyxLQUFLO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0IsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDbGlQcm9jZXNzQ29tbWFuZCxcbiAgICBDbGlQcm9jZXNzb3JNZXRhZGF0YSxcbiAgICBDbGlTdGF0ZUNvbmZpZ3VyYXRpb24sXG4gICAgRGVmYXVsdExpYnJhcnlBdXRob3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3JSZWdpc3RyeSxcbiAgICBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuaW1wb3J0IHsgQ2xpUHJvY2Vzc29yc1JlZ2lzdHJ5X1RPS0VOIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcblxuZXhwb3J0IGNsYXNzIENsaUFsaWFzQ29tbWFuZFByb2Nlc3NvciBpbXBsZW1lbnRzIElDbGlDb21tYW5kUHJvY2Vzc29yIHtcbiAgICBjb21tYW5kID0gJ2FsaWFzJztcblxuICAgIGF1dGhvciA9IERlZmF1bHRMaWJyYXJ5QXV0aG9yO1xuXG4gICAgZGVzY3JpcHRpb24gPSAnTWFuYWdlIGFsaWFzZXMgZm9yIGNvbW1hbmRzJztcblxuICAgIHByb2Nlc3NvcnM/OiBJQ2xpQ29tbWFuZFByb2Nlc3NvcltdIHwgdW5kZWZpbmVkO1xuXG4gICAgbWV0YWRhdGE/OiBDbGlQcm9jZXNzb3JNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IHtcbiAgICAgICAgaWNvbjogJ/CflKUnLFxuICAgICAgICBtb2R1bGU6ICdtaXNjJyxcbiAgICAgICAgc2VhbGVkOiB0cnVlLFxuICAgIH07XG5cbiAgICBzdGF0ZUNvbmZpZ3VyYXRpb24/OiBDbGlTdGF0ZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSB7XG4gICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgYWxpYXNlczoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JlTmFtZTogJ2FsaWFzZXMnLFxuICAgIH07XG5cbiAgICBwdWJsaWMgYWxpYXNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc29ycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAnbHMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBhbGwgYWxpYXNlcycsXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQ6IGFzeW5jIChfLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd3JpdGVyIH0gPSBjb250ZXh0O1xuXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZWxuKCdBbGlhc2VzOicpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLmFsaWFzZXMpLmZvckVhY2goKFthbGlhcywgY29tbWFuZF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUluZm8oYCAgJHthbGlhc30gLT4gJHtjb21tYW5kfWApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5hbGlhc2VzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUluZm8oJyAgTm8gYWxpYXNlcyBkZWZpbmVkJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc0NvbW1hbmQoXG4gICAgICAgIGNvbW1hbmQ6IENsaVByb2Nlc3NDb21tYW5kLFxuICAgICAgICBjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBjb250ZXh0LnNlcnZpY2VzLmdldDxJQ2xpQ29tbWFuZFByb2Nlc3NvclJlZ2lzdHJ5PihcbiAgICAgICAgICAgIENsaVByb2Nlc3NvcnNSZWdpc3RyeV9UT0tFTixcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB7IHdyaXRlciB9ID0gY29udGV4dDtcbiAgICAgICAgY29uc3QgYWxpYXNlcyA9IE9iamVjdC5rZXlzKGNvbW1hbmQuYXJncyk7XG5cbiAgICAgICAgaWYgKGFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGVFcnJvcignTm8gYWxpYXNlcyBwcm92aWRlZCcpO1xuICAgICAgICAgICAgY29udGV4dC5wcm9jZXNzLmV4aXQoLTEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbGlhcyBvZiBhbGlhc2VzKSB7XG4gICAgICAgICAgICBpZiAocmVnaXN0cnkucHJvY2Vzc29ycy5zb21lKChwKSA9PiBwLmNvbW1hbmQgPT09IGFsaWFzKSkge1xuICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgJHthbGlhc30gY2Fubm90IGJlIGFsaWFzZWQgdG8gJHtjb21tYW5kLmFyZ3NbYWxpYXNdfWAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnByb2Nlc3MuZXhpdCgtMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oYCR7YWxpYXN9IC0+ICR7Y29tbWFuZC5hcmdzW2FsaWFzXX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuc3RhdGUudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgYWxpYXNlczoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuYWxpYXNlcyxcbiAgICAgICAgICAgICAgICAuLi5jb21tYW5kLmFyZ3MsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBjb250ZXh0LnN0YXRlLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICBhc3luYyBpbml0aWFsaXplKGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnRleHQuc3RhdGVcbiAgICAgICAgICAgIC5zZWxlY3QoKHgpID0+IHhbJ2FsaWFzZXMnXSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGFsaWFzZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBhbGlhc2VzID8/IHt9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19