UNPKG

@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
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