UNPKG

@qodalis/angular-cli

Version:

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

65 lines 11.1 kB
import { Subject } from 'rxjs'; import { CliLogLevel, } from '@qodalis/cli-core'; import { CliTerminalWriter } from '../services/cli-terminal-writer'; import { CliTerminalSpinner } from '../services/progress-bars/cli-terminal-spinner'; import { CliTerminalProgressBar } from '../services/progress-bars/cli-terminal-progress-bar'; import { CliClipboard } from '../services/cli-clipboard'; import { CliExecutionProcess } from './cli-execution-process'; import { CliLogger_TOKEN, CliServiceProvider_TOKEN } from '../tokens'; import { CliStateStoreManager } from '../state/cli-state-store-manager'; import { CliTerminalTextAnimator } from '../services/progress-bars/cli-terminal-text-animator'; export class CliExecutionContext { constructor(injector, terminal, executor, showPrompt, cliOptions) { this.terminal = terminal; this.executor = executor; this.showPrompt = showPrompt; this.onAbort = new Subject(); //initialize services this.services = injector.get(CliServiceProvider_TOKEN); //initialize state store const stateStoreManager = injector.get(CliStateStoreManager); this.state = stateStoreManager.getStateStore('shared'); this.options = cliOptions; this.writer = new CliTerminalWriter(terminal); this.spinner = new CliTerminalSpinner(terminal); this.progressBar = new CliTerminalProgressBar(terminal); this.textAnimator = new CliTerminalTextAnimator(terminal); this.clipboard = new CliClipboard(this); this.process = new CliExecutionProcess(this); //initialize logger this.logger = injector.get(CliLogger_TOKEN); this.logger.setCliLogLevel(cliOptions?.logLevel || CliLogLevel.ERROR); } setContextProcessor(processor, silent) { if (!processor) { this.contextProcessor = processor; return; } if (!silent) { this.writer.writeInfo('Set ' + processor?.command + ' as context processor, press Ctrl+C to exit'); } this.contextProcessor = processor; } /** * Checks if there is a progress running * @returns true if there is a progress running * @returns false if there is no progress running */ isProgressRunning() { return (this.progressBar.isRunning || this.spinner.isRunning || this.textAnimator.isRunning); } /** * Aborts the current command */ abort() { this.onAbort.next(); } setSession(session) { this.userSession = session; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWV4ZWN1dGlvbi1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL2NvbnRleHQvY2xpLWV4ZWN1dGlvbi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQVdILFdBQVcsR0FJZCxNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRS9GLE1BQU0sT0FBTyxtQkFBbUI7SUEyQjVCLFlBQ0ksUUFBa0IsRUFDWCxRQUFrQixFQUNsQixRQUFtQyxFQUNuQyxVQUdHLEVBQ1YsVUFBdUI7UUFOaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUEyQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUdQO1FBbkJFLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBc0IxQyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFdkQsd0JBQXdCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxtQkFBbUIsQ0FDZixTQUEyQyxFQUMzQyxNQUFnQjtRQUVoQixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUVsQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLE1BQU07Z0JBQ0YsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLDZDQUE2QyxDQUNwRCxDQUFDO1NBQ0w7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCO1FBQ3BCLE9BQU8sQ0FDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXJtaW5hbCB9IGZyb20gJ0B4dGVybS94dGVybSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgIElDbGlUZXJtaW5hbFdyaXRlcixcbiAgICBJQ2xpVXNlclNlc3Npb24sXG4gICAgQ2xpT3B0aW9ucyxcbiAgICBJQ2xpU3Bpbm5lcixcbiAgICBJQ2xpUGVyY2VudGFnZVByb2dyZXNzQmFyLFxuICAgIElDbGlDbGlwYm9hcmQsXG4gICAgSUNsaUV4ZWN1dGlvblByb2Nlc3MsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUxvZ2dlcixcbiAgICBDbGlMb2dMZXZlbCxcbiAgICBJQ2xpU2VydmljZVByb3ZpZGVyLFxuICAgIElDbGlTdGF0ZVN0b3JlLFxuICAgIElDbGlUZXh0QW5pbWF0b3IsXG59IGZyb20gJ0Bxb2RhbGlzL2NsaS1jb3JlJztcbmltcG9ydCB7IENsaUNvbW1hbmRFeGVjdXRvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jbGktY29tbWFuZC1leGVjdXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IENsaVRlcm1pbmFsV3JpdGVyIH0gZnJvbSAnLi4vc2VydmljZXMvY2xpLXRlcm1pbmFsLXdyaXRlcic7XG5pbXBvcnQgeyBDbGlUZXJtaW5hbFNwaW5uZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmVzcy1iYXJzL2NsaS10ZXJtaW5hbC1zcGlubmVyJztcbmltcG9ydCB7IENsaVRlcm1pbmFsUHJvZ3Jlc3NCYXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmVzcy1iYXJzL2NsaS10ZXJtaW5hbC1wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgQ2xpQ2xpcGJvYXJkIH0gZnJvbSAnLi4vc2VydmljZXMvY2xpLWNsaXBib2FyZCc7XG5pbXBvcnQgeyBDbGlFeGVjdXRpb25Qcm9jZXNzIH0gZnJvbSAnLi9jbGktZXhlY3V0aW9uLXByb2Nlc3MnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaUxvZ2dlcl9UT0tFTiwgQ2xpU2VydmljZVByb3ZpZGVyX1RPS0VOIH0gZnJvbSAnLi4vdG9rZW5zJztcbmltcG9ydCB7IENsaVN0YXRlU3RvcmVNYW5hZ2VyIH0gZnJvbSAnLi4vc3RhdGUvY2xpLXN0YXRlLXN0b3JlLW1hbmFnZXInO1xuaW1wb3J0IHsgQ2xpVGVybWluYWxUZXh0QW5pbWF0b3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmVzcy1iYXJzL2NsaS10ZXJtaW5hbC10ZXh0LWFuaW1hdG9yJztcblxuZXhwb3J0IGNsYXNzIENsaUV4ZWN1dGlvbkNvbnRleHQgaW1wbGVtZW50cyBJQ2xpRXhlY3V0aW9uQ29udGV4dCB7XG4gICAgcHVibGljIHVzZXJTZXNzaW9uPzogSUNsaVVzZXJTZXNzaW9uO1xuXG4gICAgcHVibGljIGNvbnRleHRQcm9jZXNzb3I/OiBJQ2xpQ29tbWFuZFByb2Nlc3NvcjtcblxuICAgIHB1YmxpYyByZWFkb25seSB3cml0ZXI6IElDbGlUZXJtaW5hbFdyaXRlcjtcblxuICAgIHB1YmxpYyByZWFkb25seSBzcGlubmVyOiBJQ2xpU3Bpbm5lcjtcblxuICAgIHB1YmxpYyByZWFkb25seSB0ZXh0QW5pbWF0b3I6IElDbGlUZXh0QW5pbWF0b3I7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvZ3Jlc3NCYXI6IElDbGlQZXJjZW50YWdlUHJvZ3Jlc3NCYXI7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucz86IENsaU9wdGlvbnM7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25BYm9ydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdGU6IElDbGlTdGF0ZVN0b3JlO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaXBib2FyZDogSUNsaUNsaXBib2FyZDtcblxuICAgIHB1YmxpYyByZWFkb25seSBwcm9jZXNzOiBJQ2xpRXhlY3V0aW9uUHJvY2VzcztcblxuICAgIHB1YmxpYyByZWFkb25seSBsb2dnZXI6IElDbGlMb2dnZXI7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZXM6IElDbGlTZXJ2aWNlUHJvdmlkZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgdGVybWluYWw6IFRlcm1pbmFsLFxuICAgICAgICBwdWJsaWMgZXhlY3V0b3I6IENsaUNvbW1hbmRFeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBzaG93UHJvbXB0OiAob3B0aW9ucz86IHtcbiAgICAgICAgICAgIHJlc2V0PzogYm9vbGVhbjtcbiAgICAgICAgICAgIG5ld0xpbmU/OiBib29sZWFuO1xuICAgICAgICB9KSA9PiB2b2lkLFxuICAgICAgICBjbGlPcHRpb25zPzogQ2xpT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgLy9pbml0aWFsaXplIHNlcnZpY2VzXG4gICAgICAgIHRoaXMuc2VydmljZXMgPSBpbmplY3Rvci5nZXQoQ2xpU2VydmljZVByb3ZpZGVyX1RPS0VOKTtcblxuICAgICAgICAvL2luaXRpYWxpemUgc3RhdGUgc3RvcmVcbiAgICAgICAgY29uc3Qgc3RhdGVTdG9yZU1hbmFnZXIgPSBpbmplY3Rvci5nZXQoQ2xpU3RhdGVTdG9yZU1hbmFnZXIpO1xuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGVTdG9yZU1hbmFnZXIuZ2V0U3RhdGVTdG9yZSgnc2hhcmVkJyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gY2xpT3B0aW9ucztcbiAgICAgICAgdGhpcy53cml0ZXIgPSBuZXcgQ2xpVGVybWluYWxXcml0ZXIodGVybWluYWwpO1xuXG4gICAgICAgIHRoaXMuc3Bpbm5lciA9IG5ldyBDbGlUZXJtaW5hbFNwaW5uZXIodGVybWluYWwpO1xuICAgICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IENsaVRlcm1pbmFsUHJvZ3Jlc3NCYXIodGVybWluYWwpO1xuICAgICAgICB0aGlzLnRleHRBbmltYXRvciA9IG5ldyBDbGlUZXJtaW5hbFRleHRBbmltYXRvcih0ZXJtaW5hbCk7XG5cbiAgICAgICAgdGhpcy5jbGlwYm9hcmQgPSBuZXcgQ2xpQ2xpcGJvYXJkKHRoaXMpO1xuICAgICAgICB0aGlzLnByb2Nlc3MgPSBuZXcgQ2xpRXhlY3V0aW9uUHJvY2Vzcyh0aGlzKTtcblxuICAgICAgICAvL2luaXRpYWxpemUgbG9nZ2VyXG4gICAgICAgIHRoaXMubG9nZ2VyID0gaW5qZWN0b3IuZ2V0KENsaUxvZ2dlcl9UT0tFTik7XG4gICAgICAgIHRoaXMubG9nZ2VyLnNldENsaUxvZ0xldmVsKGNsaU9wdGlvbnM/LmxvZ0xldmVsIHx8IENsaUxvZ0xldmVsLkVSUk9SKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZXh0UHJvY2Vzc29yKFxuICAgICAgICBwcm9jZXNzb3I6IElDbGlDb21tYW5kUHJvY2Vzc29yIHwgdW5kZWZpbmVkLFxuICAgICAgICBzaWxlbnQ/OiBib29sZWFuLFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXByb2Nlc3Nvcikge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0UHJvY2Vzc29yID0gcHJvY2Vzc29yO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgICAgICdTZXQgJyArXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nvcj8uY29tbWFuZCArXG4gICAgICAgICAgICAgICAgICAgICcgYXMgY29udGV4dCBwcm9jZXNzb3IsIHByZXNzIEN0cmwrQyB0byBleGl0JyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRleHRQcm9jZXNzb3IgPSBwcm9jZXNzb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEgcHJvZ3Jlc3MgcnVubmluZ1xuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYSBwcm9ncmVzcyBydW5uaW5nXG4gICAgICogQHJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgcnVubmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBpc1Byb2dyZXNzUnVubmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIuaXNSdW5uaW5nIHx8XG4gICAgICAgICAgICB0aGlzLnNwaW5uZXIuaXNSdW5uaW5nIHx8XG4gICAgICAgICAgICB0aGlzLnRleHRBbmltYXRvci5pc1J1bm5pbmdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBYm9ydHMgdGhlIGN1cnJlbnQgY29tbWFuZFxuICAgICAqL1xuICAgIHB1YmxpYyBhYm9ydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkFib3J0Lm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2Vzc2lvbihzZXNzaW9uOiBJQ2xpVXNlclNlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyU2Vzc2lvbiA9IHNlc3Npb247XG4gICAgfVxufVxuIl19