{"version":3,"file":"testdozer-ng-cmd-builder.mjs","sources":["../../../projects/ng-cmd-builder/src/lib/build/injection-tokens/options.injection-token.ts","../../../projects/ng-cmd-builder/src/lib/build/injection-tokens/builder-context.injection-token.ts","../../../projects/ng-cmd-builder/src/lib/build/options.builder.ts","../../../projects/ng-cmd-builder/src/lib/build/injection-tokens/spawn.injection-token.ts","../../../projects/ng-cmd-builder/src/lib/build/injection-tokens/process.injection-token.ts","../../../projects/ng-cmd-builder/src/lib/build/injection-tokens/console.injection-token.ts","../../../projects/ng-cmd-builder/src/lib/build/process.provider.ts","../../../projects/ng-cmd-builder/src/lib/build/command.executor.ts","../../../projects/ng-cmd-builder/src/lib/build/builder.factory.ts","../../../projects/ng-cmd-builder/src/lib/build/index.ts","../../../projects/ng-cmd-builder/src/lib/build/testdozer-ng-cmd-builder.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { JsonObject } from \"@angular-devkit/core\";\nimport { Schema } from \"../schema\";\n\nexport const BUILDER_OPTIONS = new InjectionToken<JsonObject & Schema>(\"Builder options\");\n","import { InjectionToken } from \"@angular/core\";\nimport { BuilderContext } from \"@angular-devkit/architect\";\n\nexport const BUILDER_CONTEXT = new InjectionToken<BuilderContext>(\"Builder context\");\n","import { CommandOptions } from \"./schema\";\nimport { SpawnOptions } from \"child_process\";\n\nexport class OptionsBuilder {\n    build({options: {shell, env, windowsHide, cwd}}: CommandOptions) {\n\n        const options = {} as SpawnOptions;\n        if (cwd !== undefined) {\n            options.cwd = cwd;\n        }\n        if (Reflect.ownKeys(env).length > 0) {\n            options.env = env;\n        }\n        if (shell !== undefined) {\n            options.shell = shell;\n        }\n        if (windowsHide !== undefined) {\n            options.windowsHide = windowsHide;\n        }\n        return options;\n    }\n}\n\n","import { InjectionToken } from \"@angular/core\";\nimport { spawn } from \"child_process\";\n\nexport const SPAWN = new InjectionToken<typeof spawn>(\"nodejs spawn\");\n","import { InjectionToken } from \"@angular/core\";\n\nexport const PROCESS = new InjectionToken<typeof process>(\"nodejs process\");\n","import { InjectionToken } from \"@angular/core\";\n\nexport const CONSOLE = new InjectionToken<typeof console>(\"nodejs console\");\n","import { SpawnOptions } from \"child_process\";\nimport { SPAWN } from \"./injection-tokens/spawn.injection-token\";\nimport { PROCESS } from \"./injection-tokens/process.injection-token\";\nimport { CONSOLE } from \"./injection-tokens/console.injection-token\";\nimport { Inject } from \"@angular/core\";\nimport { TypeofInjectionToken } from \"@testdozer/ng-injector-types\";\n\nexport class ProcessProvider {\n    constructor(\n        @Inject(SPAWN)\n        private readonly spawn: TypeofInjectionToken<typeof SPAWN>,\n        @Inject(PROCESS)\n        private readonly process: TypeofInjectionToken<typeof PROCESS>,\n        @Inject(CONSOLE)\n        private readonly console: TypeofInjectionToken<typeof CONSOLE>) {\n    }\n\n    create(command: string, args: string[], options: SpawnOptions) {\n        const ps = this.spawn(command, args, options);\n\n        this.process.on(\"SIGINT\", () => ps.kill(\"SIGTERM\"));\n        this.process.on(\"SIGTERM\", () => ps.kill(\"SIGTERM\"));\n        ps.on(\"error\", error => this.console.error(error));\n        return ps;\n    }\n}\n","import { BuilderOutput } from \"@angular-devkit/architect\";\nimport { OptionsBuilder } from \"./options.builder\";\nimport { ProcessProvider } from \"./process.provider\";\nimport { StdioOptions } from \"child_process\";\nimport { CommandOptions } from \"./schema\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class CommandExecutor {\n    constructor(\n        private readonly processProvider: ProcessProvider,\n        private readonly optionsBuilder: OptionsBuilder) {\n    }\n\n    async run(commandOptions: CommandOptions): Promise<BuilderOutput> {\n        const {command, args} = commandOptions;\n        const options = {...this.optionsBuilder.build(commandOptions), stdio: \"inherit\" as StdioOptions};\n        const ps = this.processProvider.create(command, args ?? [], options);\n\n        return new Promise((resolve, reject) => {\n            ps.on(\"close\", e => e === 0 ? resolve(undefined) : reject(undefined));\n        });\n    }\n}\n","import { BuilderOutput } from \"@angular-devkit/architect\";\nimport { CommandExecutor } from \"./command.executor\";\nimport { Inject } from \"@angular/core\";\nimport { BUILDER_OPTIONS } from \"./injection-tokens/options.injection-token\";\nimport { BUILDER_CONTEXT } from \"./injection-tokens/builder-context.injection-token\";\nimport { TypeofInjectionToken } from \"@testdozer/ng-injector-types\";\n\nexport class BuilderFactory {\n    constructor(\n        @Inject(BUILDER_OPTIONS)\n        private readonly options: TypeofInjectionToken<typeof BUILDER_OPTIONS>,\n        @Inject(BUILDER_CONTEXT)\n        private readonly context: TypeofInjectionToken<typeof BUILDER_CONTEXT>,\n        private readonly executor: CommandExecutor) {\n    }\n\n    async create(): Promise<BuilderOutput> {\n        const {commands} = this.options;\n        try {\n            for (const command of commands) {\n                this.context.logger.info(`Executing: ${command.command}`);\n                await this.executor.run(command);\n            }\n        } catch {\n            return {success: false};\n        }\n        return {success: true};\n    }\n}\n","import { BuilderContext, BuilderOutput, createBuilder } from \"@angular-devkit/architect\";\nimport { JsonObject } from \"@angular-devkit/core\";\nimport { Schema } from \"./schema\";\nimport { BUILDER_OPTIONS } from \"./injection-tokens/options.injection-token\";\nimport { BUILDER_CONTEXT } from \"./injection-tokens/builder-context.injection-token\";\nimport { BuilderFactory } from \"./builder.factory\";\nimport { ProcessProvider } from \"./process.provider\";\nimport { SPAWN } from \"./injection-tokens/spawn.injection-token\";\nimport { spawn } from \"child_process\";\nimport { PROCESS } from \"./injection-tokens/process.injection-token\";\nimport { CONSOLE } from \"./injection-tokens/console.injection-token\";\nimport { OptionsBuilder } from \"./options.builder\";\nimport { Injector, StaticProvider } from \"@angular/core\";\nimport { CommandExecutor } from \"./command.executor\";\n\nconst builderFactory = async (\n    options: JsonObject & Schema,\n    context: BuilderContext,\n): Promise<BuilderOutput> => {\n    const injector = Injector.create({\n        providers: [\n            {provide: BUILDER_OPTIONS, useValue: options, deps: []},\n            {provide: BUILDER_CONTEXT, useValue: context, deps: []},\n            {provide: SPAWN, useValue: spawn, deps: []},\n            {provide: PROCESS, useValue: process, deps: []},\n            {provide: CONSOLE, useValue: console, deps: []},\n            {provide: ProcessProvider, useClass: ProcessProvider, deps: [SPAWN, PROCESS, CONSOLE]},\n            {provide: OptionsBuilder, useClass: OptionsBuilder, deps: []},\n            {provide: BuilderFactory, useClass: BuilderFactory, deps: [BUILDER_OPTIONS, BUILDER_CONTEXT, CommandExecutor]},\n            {provide: CommandExecutor, useClass: CommandExecutor, deps: [ProcessProvider, OptionsBuilder]},\n        ] as StaticProvider[]\n    });\n    const factory = injector.get(BuilderFactory);\n    return factory.create();\n};\n\nexport const builder = createBuilder(builderFactory);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ProcessProvider","i2.OptionsBuilder"],"mappings":";;;;;;AAIO,MAAM,eAAe,GAAG,IAAI,cAAc,CAAsB,iBAAiB,CAAC;;ACDlF,MAAM,eAAe,GAAG,IAAI,cAAc,CAAiB,iBAAiB,CAAC;;MCAvE,cAAc,CAAA;AACvB,IAAA,KAAK,CAAC,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAC,EAAiB,EAAA;QAE3D,MAAM,OAAO,GAAG,EAAkB,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,YAAA,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,SAAA;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,SAAA;QACD,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,SAAA;QACD,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,YAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AACrC,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AACJ;;AClBM,MAAM,KAAK,GAAG,IAAI,cAAc,CAAe,cAAc,CAAC;;ACD9D,MAAM,OAAO,GAAG,IAAI,cAAc,CAAiB,gBAAgB,CAAC;;ACApE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAiB,gBAAgB,CAAC;;ACKpE,IAAM,eAAe,GAArB,MAAM,eAAe,CAAA;AACxB,IAAA,WAAA,CAEqB,KAAyC,EAEzC,OAA6C,EAE7C,OAA6C,EAAA;QAJ7C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoC;QAEzC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsC;QAE7C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsC;KACjE;AAED,IAAA,MAAM,CAAC,OAAe,EAAE,IAAc,EAAE,OAAqB,EAAA;AACzD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAE9C,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,QAAA,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,QAAA,OAAO,EAAE,CAAC;KACb;CACJ,CAAA;AAlBY,eAAe,GAAA,UAAA,CAAA;AAEnB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,KAAK,CAAC,CAAA;AAEb,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,OAAO,CAAC,CAAA;AAEf,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,OAAO,CAAC,CAAA;;AANX,CAAA,EAAA,eAAe,CAkB3B;;MCjBY,eAAe,CAAA;IACxB,WACqB,CAAA,eAAgC,EAChC,cAA8B,EAAA;QAD9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAClD;IAED,MAAM,GAAG,CAAC,cAA8B,EAAA;AACpC,QAAA,MAAM,EAAC,OAAO,EAAE,IAAI,EAAC,GAAG,cAAc,CAAC;AACvC,QAAA,MAAM,OAAO,GAAG,EAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAyB,EAAC,CAAC;AACjG,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAErE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1E,SAAC,CAAC,CAAC;KACN;;8EAdQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,eAAA,CAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;ACAJ,IAAM,cAAc,GAApB,MAAM,cAAc,CAAA;AACvB,IAAA,WAAA,CAEqB,OAAqD,EAErD,OAAqD,EACrD,QAAyB,EAAA;QAHzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8C;QAErD,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8C;QACrD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;KAC7C;AAED,IAAA,MAAM,MAAM,GAAA;AACR,QAAA,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI;AACA,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;QAAC,MAAM;AACJ,YAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;KAC1B;CACJ,CAAA;AArBY,cAAc,GAAA,UAAA,CAAA;AAElB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;AAEvB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qDAEG,eAAe,CAAA,CAAA;AANrC,CAAA,EAAA,cAAc,CAqB1B;;ACbD,MAAM,cAAc,GAAG,OACnB,OAA4B,EAC5B,OAAuB,KACC;AACxB,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,QAAA,SAAS,EAAE;YACP,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC;YACvD,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC;YACvD,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAC;YAC3C,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC;YAC/C,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAC;AAC/C,YAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAC;YACtF,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAC;AAC7D,YAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,EAAC;AAC9G,YAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,EAAC;AAC7E,SAAA;AACxB,KAAA,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC7C,IAAA,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC,CAAC;MAEW,OAAO,GAAG,aAAa,CAAC,cAAc;;ACpCnD;;AAEG;;;;"}