@qodalis/angular-cli
Version:
A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.
84 lines • 10.4 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { CliIcon, } from '@qodalis/cli-core';
import { DefaultLibraryAuthor } from '@qodalis/cli-core';
import { ICliUsersStoreService_TOKEN } from '../../tokens';
import * as i0 from "@angular/core";
export class CliAddUserCommandProcessor {
constructor(usersStore) {
this.usersStore = usersStore;
this.command = 'adduser';
this.description = 'Add a new user';
this.author = DefaultLibraryAuthor;
this.metadata = {
sealed: true,
module: 'users',
icon: CliIcon.User,
};
this.stateConfiguration = {
initialState: {},
storeName: 'users',
};
this.allowUnlistedCommands = true;
this.valueRequired = true;
this.parameters = [
{
name: 'email',
description: 'The email of the user',
required: true,
type: 'email',
validator: (value) => {
//validate email format
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!emailRegex.test(value)) {
return {
valid: false,
message: 'Invalid email format',
};
}
return {
valid: true,
};
},
},
{
name: 'groups',
description: 'The groups the user belongs to, separated by commas',
type: 'string',
required: false,
},
];
}
async processCommand(command, context) {
const name = command.value;
const email = command.args['email'];
const groups = command.args['groups']?.split(',') || [];
try {
await this.usersStore.createUser({
name,
email,
groups,
});
context.writer.writeInfo('User created successfully');
}
catch (e) {
console.error(e);
context.writer.writeError(e?.toString() || 'An error occurred while creating the user');
}
}
writeDescription(context) {
context.writer.writeln('Add a new user');
context.writer.writeln('Usage: adduser <name> --email=<email> --groups=<groups>');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliAddUserCommandProcessor, deps: [{ token: ICliUsersStoreService_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliAddUserCommandProcessor, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliAddUserCommandProcessor, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [ICliUsersStoreService_TOKEN]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWFkZC11c2VyLWNvbW1hbmQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL3Byb2Nlc3NvcnMvdXNlcnMvY2xpLWFkZC11c2VyLWNvbW1hbmQtcHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDSCxPQUFPLEdBUVYsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBSzNELE1BQU0sT0FBTywwQkFBMEI7SUFvRG5DLFlBRXFCLFVBQWlDO1FBQWpDLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBckR0RCxZQUFPLEdBQUcsU0FBUyxDQUFDO1FBRXBCLGdCQUFXLEdBQXdCLGdCQUFnQixDQUFDO1FBRXBELFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUU5QixhQUFRLEdBQXNDO1lBQzFDLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7U0FDckIsQ0FBQztRQUVGLHVCQUFrQixHQUF1QztZQUNyRCxZQUFZLEVBQUUsRUFBRTtZQUNoQixTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDO1FBRUYsMEJBQXFCLEdBQXlCLElBQUksQ0FBQztRQUVuRCxrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFFM0MsZUFBVSxHQUFrRDtZQUN4RDtnQkFDSSxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUUsdUJBQXVCO2dCQUNwQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsT0FBTztnQkFDYixTQUFTLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtvQkFDekIsdUJBQXVCO29CQUN2QixNQUFNLFVBQVUsR0FDWixrREFBa0QsQ0FBQztvQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3pCLE9BQU87NEJBQ0gsS0FBSyxFQUFFLEtBQUs7NEJBQ1osT0FBTyxFQUFFLHNCQUFzQjt5QkFDbEMsQ0FBQztxQkFDTDtvQkFFRCxPQUFPO3dCQUNILEtBQUssRUFBRSxJQUFJO3FCQUNkLENBQUM7Z0JBQ04sQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHFEQUFxRDtnQkFDbEUsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7YUFDbEI7U0FDSixDQUFDO0lBS0MsQ0FBQztJQUVKLEtBQUssQ0FBQyxjQUFjLENBQ2hCLE9BQTBCLEVBQzFCLE9BQTZCO1FBRTdCLE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxLQUFlLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQVcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBYSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEUsSUFBSTtZQUNBLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxNQUFNO2FBQ1QsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUN6RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FDckIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLDJDQUEyQyxDQUMvRCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBNkI7UUFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDbEIseURBQXlELENBQzVELENBQUM7SUFDTixDQUFDOytHQXRGUSwwQkFBMEIsa0JBcUR2QiwyQkFBMkI7bUhBckQ5QiwwQkFBMEIsY0FGdkIsTUFBTTs7NEZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBc0RRLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENsaUljb24sXG4gICAgQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgQ2xpUHJvY2Vzc29yTWV0YWRhdGEsXG4gICAgQ2xpU3RhdGVDb25maWd1cmF0aW9uLFxuICAgIElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcixcbiAgICBJQ2xpQ29tbWFuZFByb2Nlc3NvcixcbiAgICBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbiAgICBJQ2xpVXNlcnNTdG9yZVNlcnZpY2UsXG59IGZyb20gJ0Bxb2RhbGlzL2NsaS1jb3JlJztcbmltcG9ydCB7IERlZmF1bHRMaWJyYXJ5QXV0aG9yIH0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuaW1wb3J0IHsgSUNsaVVzZXJzU3RvcmVTZXJ2aWNlX1RPS0VOIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpQWRkVXNlckNvbW1hbmRQcm9jZXNzb3IgaW1wbGVtZW50cyBJQ2xpQ29tbWFuZFByb2Nlc3NvciB7XG4gICAgY29tbWFuZCA9ICdhZGR1c2VyJztcblxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ0FkZCBhIG5ldyB1c2VyJztcblxuICAgIGF1dGhvciA9IERlZmF1bHRMaWJyYXJ5QXV0aG9yO1xuXG4gICAgbWV0YWRhdGE/OiBDbGlQcm9jZXNzb3JNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IHtcbiAgICAgICAgc2VhbGVkOiB0cnVlLFxuICAgICAgICBtb2R1bGU6ICd1c2VycycsXG4gICAgICAgIGljb246IENsaUljb24uVXNlcixcbiAgICB9O1xuXG4gICAgc3RhdGVDb25maWd1cmF0aW9uPzogQ2xpU3RhdGVDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0ge1xuICAgICAgICBpbml0aWFsU3RhdGU6IHt9LFxuICAgICAgICBzdG9yZU5hbWU6ICd1c2VycycsXG4gICAgfTtcblxuICAgIGFsbG93VW5saXN0ZWRDb21tYW5kcz86IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuXG4gICAgdmFsdWVSZXF1aXJlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuXG4gICAgcGFyYW1ldGVycz86IElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcltdIHwgdW5kZWZpbmVkID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZW1haWwnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZW1haWwgb2YgdGhlIHVzZXInLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIC8vdmFsaWRhdGUgZW1haWwgZm9ybWF0XG4gICAgICAgICAgICAgICAgY29uc3QgZW1haWxSZWdleCA9XG4gICAgICAgICAgICAgICAgICAgIC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgICAgICAgICAgICAgICBpZiAoIWVtYWlsUmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGVtYWlsIGZvcm1hdCcsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdncm91cHMnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZ3JvdXBzIHRoZSB1c2VyIGJlbG9uZ3MgdG8sIHNlcGFyYXRlZCBieSBjb21tYXMnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KElDbGlVc2Vyc1N0b3JlU2VydmljZV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2Vyc1N0b3JlOiBJQ2xpVXNlcnNTdG9yZVNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgYXN5bmMgcHJvY2Vzc0NvbW1hbmQoXG4gICAgICAgIGNvbW1hbmQ6IENsaVByb2Nlc3NDb21tYW5kLFxuICAgICAgICBjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gY29tbWFuZC52YWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgIGNvbnN0IGVtYWlsOiBzdHJpbmcgPSBjb21tYW5kLmFyZ3NbJ2VtYWlsJ107XG4gICAgICAgIGNvbnN0IGdyb3Vwczogc3RyaW5nW10gPSBjb21tYW5kLmFyZ3NbJ2dyb3VwcyddPy5zcGxpdCgnLCcpIHx8IFtdO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVzZXJzU3RvcmUuY3JlYXRlVXNlcih7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICBncm91cHMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKCdVc2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUVycm9yKFxuICAgICAgICAgICAgICAgIGU/LnRvU3RyaW5nKCkgfHwgJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNyZWF0aW5nIHRoZSB1c2VyJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZURlc2NyaXB0aW9uKGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oJ0FkZCBhIG5ldyB1c2VyJyk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oXG4gICAgICAgICAgICAnVXNhZ2U6IGFkZHVzZXIgPG5hbWU+IC0tZW1haWw9PGVtYWlsPiAtLWdyb3Vwcz08Z3JvdXBzPicsXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19