UNPKG

projen

Version:

CDK for software projects

105 lines 18.4 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskWorkflowJob = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const constants_1 = require("./constants"); const workflow_steps_1 = require("./workflow-steps"); const component_1 = require("../component"); const runner_options_1 = require("../runner-options"); const util_1 = require("./private/util"); /** * The primary or initial job of a TaskWorkflow. * * @implements {Job} */ class TaskWorkflowJob extends component_1.Component { /** * @param scope should be part of the project the Task belongs to. * @param task the main task that is run as part of this job. * @param options options to configure the TaskWorkflowJob. */ constructor(scope, task, options) { super(scope, `${new.target.name}#${task.name}`); const preCheckoutSteps = options.preCheckoutSteps ?? []; const checkoutWith = {}; if (options.downloadLfs) { checkoutWith.lfs = true; } if (options.checkoutSubmodules && options.checkoutSubmodules !== workflow_steps_1.CheckoutSubmodules.DISABLED) { checkoutWith.submodules = options.checkoutSubmodules; } // 'checkoutWith' can override 'lfs' and 'submodules' Object.assign(checkoutWith, options.checkoutWith ?? {}); const preBuildSteps = options.preBuildSteps ?? []; const postBuildSteps = options.postBuildSteps ?? []; const gitIdentity = options.gitIdentity ?? constants_1.DEFAULT_GITHUB_ACTIONS_USER; if (options.artifactsDirectory) { (0, util_1.ensureNotHiddenPath)(options.artifactsDirectory, "artifactsDirectory"); postBuildSteps.push(workflow_steps_1.WorkflowSteps.uploadArtifact({ // Setting to always will ensure that this step will run even if // the previous ones have failed (e.g. coverage report, internal logs, etc) if: "always()", with: { name: options.artifactsDirectory, path: options.artifactsDirectory, }, })); } const runsOnInputs = (0, runner_options_1.filteredRunsOnOptions)(options.runsOn, options.runsOnGroup); this.runsOn = runsOnInputs?.runsOn; this.runsOnGroup = runsOnInputs?.runsOnGroup; this.container = options.container; this.env = options.env; this.permissions = options.permissions; this.defaults = options?.jobDefaults; this.if = options.condition; this.outputs = options.outputs; this.environment = options.environment; this.steps = [ ...preCheckoutSteps, // check out sources. workflow_steps_1.WorkflowSteps.checkout({ with: checkoutWith }), // sets git identity so we can push later workflow_steps_1.WorkflowSteps.setupGitIdentity({ gitIdentity }), ...preBuildSteps, // run the main build task { name: task.name, run: this.project.runTaskCommand(task), }, ...postBuildSteps, ]; } /** * @jsii ignore * @internal */ toJSON() { return { runsOn: this.runsOn, runsOnGroup: this.runsOnGroup, steps: this.steps, environment: this.environment, outputs: this.outputs, env: this.env, defaults: this.defaults, timeoutMinutes: this.timeoutMinutes, continueOnError: this.continueOnError, container: this.container, services: this.services, tools: this.tools, name: this.name, needs: this.needs, permissions: this.permissions, concurrency: this.concurrency, if: this.if, strategy: this.strategy, }; } } exports.TaskWorkflowJob = TaskWorkflowJob; _a = JSII_RTTI_SYMBOL_1; TaskWorkflowJob[_a] = { fqn: "projen.github.TaskWorkflowJob", version: "0.99.64" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay13b3JrZmxvdy1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL3Rhc2std29ya2Zsb3ctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsMkNBQTBEO0FBRzFELHFEQUFxRTtBQVdyRSw0Q0FBeUM7QUFFekMsc0RBQTBEO0FBRTFELHlDQUFxRDtBQXVIckQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxxQkFBUztJQW9CNUM7Ozs7T0FJRztJQUNILFlBQVksS0FBaUIsRUFBRSxJQUFVLEVBQUUsT0FBK0I7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUV4RCxNQUFNLFlBQVksR0FBdUQsRUFBRSxDQUFDO1FBQzVFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLFlBQVksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUNFLE9BQU8sQ0FBQyxrQkFBa0I7WUFDMUIsT0FBTyxDQUFDLGtCQUFrQixLQUFLLG1DQUFrQixDQUFDLFFBQVEsRUFDMUQsQ0FBQztZQUNELFlBQVksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1FBQ3ZELENBQUM7UUFDRCxxREFBcUQ7UUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFdBQVcs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QTFISCwwQ0EySEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEdpdElkZW50aXR5IH0gZnJvbSBcIi4vdGFzay13b3JrZmxvd1wiO1xuaW1wb3J0IHR5cGUgeyBDaGVja291dFdpdGggfSBmcm9tIFwiLi93b3JrZmxvdy1zdGVwc1wiO1xuaW1wb3J0IHsgQ2hlY2tvdXRTdWJtb2R1bGVzLCBXb3JrZmxvd1N0ZXBzIH0gZnJvbSBcIi4vd29ya2Zsb3ctc3RlcHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29udGFpbmVyT3B0aW9ucyxcbiAgSm9iLFxuICBKb2JEZWZhdWx0cyxcbiAgSm9iUGVybWlzc2lvbnMsXG4gIEpvYlN0ZXAsXG4gIEpvYlN0ZXBPdXRwdXQsXG4gIEpvYlN0cmF0ZWd5LFxuICBUb29scyxcbn0gZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEdyb3VwUnVubmVyT3B0aW9ucyB9IGZyb20gXCIuLi9ydW5uZXItb3B0aW9uc1wiO1xuaW1wb3J0IHsgZmlsdGVyZWRSdW5zT25PcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi4vdGFza1wiO1xuaW1wb3J0IHsgZW5zdXJlTm90SGlkZGVuUGF0aCB9IGZyb20gXCIuL3ByaXZhdGUvdXRpbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gY3JlYXRlIHRoZSBKb2IgYXNzb2NpYXRlZCB3aXRoIGEgVGFza1dvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tXb3JrZmxvd0pvYk9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXI/OiBDb250YWluZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRzIGFuICdpZicgY29uZGl0aW9uIHRvIHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkaXJlY3RvcnkgbmFtZSB3aGljaCBjb250YWlucyBhcnRpZmFjdHMgdG8gYmUgdXBsb2FkZWQgKGUuZy4gYGRpc3RgKS5cbiAgICogSWYgdGhpcyBpcyBzZXQsIHRoZSBjb250ZW50cyBvZiB0aGlzIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkIGFzIGFuXG4gICAqIGFydGlmYWN0IGF0IHRoZSBlbmQgb2YgdGhlIHdvcmtmbG93IHJ1biwgZXZlbiBpZiBvdGhlciBzdGVwcyBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdCBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5pdGlhbCBzdGVwcyB0byBydW4gYmVmb3JlIHRoZSBzb3VyY2UgY29kZSBjaGVja291dC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3Qgc2V0XG4gICAqL1xuICByZWFkb25seSBwcmVDaGVja291dFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBmb3IgdGhlIGB3aXRoYCBwcm9wZXJ0eSBvZiB0aGUgc291cmNlIGNvZGUgY2hlY2tvdXQgc3RlcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3Qgc2V0XG4gICAqL1xuICByZWFkb25seSBjaGVja291dFdpdGg/OiBDaGVja291dFdpdGg7XG5cbiAgLyoqXG4gICAqIFN0ZXBzIHRvIHJ1biBiZWZvcmUgdGhlIG1haW4gYnVpbGQgc3RlcC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3Qgc2V0XG4gICAqL1xuICByZWFkb25seSBwcmVCdWlsZFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBBY3Rpb25zIHRvIHJ1biBhZnRlciB0aGUgbWFpbiBidWlsZCBzdGVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdCBzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBvc3RCdWlsZFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBXb3JrZmxvdyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBQZXJtaXNzaW9ucyBmb3IgdGhlIGJ1aWxkIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zOiBKb2JQZXJtaXNzaW9ucztcblxuICAvKipcbiAgICogTWFwcGluZyBvZiBqb2Igb3V0cHV0IG5hbWVzIHRvIHZhbHVlcy9leHByZXNzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM/OiB7IFtuYW1lOiBzdHJpbmddOiBKb2JTdGVwT3V0cHV0IH07XG5cbiAgLyoqXG4gICAqIFRoZSBnaXQgaWRlbnRpdHkgdG8gdXNlIGluIHRoaXMgd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWIgQWN0aW9ucyB1c2VyXG4gICAqL1xuICByZWFkb25seSBnaXRJZGVudGl0eT86IEdpdElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIHNlbGVjdGlvbiBsYWJlbHNcbiAgICogQGRlZmF1bHQgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgYnkgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIEdyb3VwIHNlbGVjdGlvbiBvcHRpb25zXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgdGFyZ2V0IFJ1bm5lciBHcm91cCBieSBuYW1lIGFuZC9vciBsYWJlbHNcbiAgICogQHRocm93cyB7RXJyb3J9IGlmIGJvdGggYHJ1bnNPbmAgYW5kIGBydW5zT25Hcm91cGAgYXJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuc09uR3JvdXA/OiBHcm91cFJ1bm5lck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZG93bmxvYWQgZmlsZXMgZnJvbSBHaXQgTEZTIGZvciB0aGlzIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlIHRoZSBzZXR0aW5nIG9uIHRoZSBjb3JyZXNwb25kaW5nIEdpdEh1YiBwcm9qZWN0XG4gICAqL1xuICByZWFkb25seSBkb3dubG9hZExmcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2hlY2tvdXQgR2l0IHN1Ym1vZHVsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlIHRoZSBzZXR0aW5nIG9uIHRoZSBjb3JyZXNwb25kaW5nIEdpdEh1YiBwcm9qZWN0XG4gICAqL1xuICByZWFkb25seSBjaGVja291dFN1Ym1vZHVsZXM/OiBDaGVja291dFN1Ym1vZHVsZXM7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGFsbCBzdGVwcyBpbiB0aGUgVGFza1dvcmtmbG93IEpvYi5cbiAgICovXG4gIHJlYWRvbmx5IGpvYkRlZmF1bHRzPzogSm9iRGVmYXVsdHM7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgQWN0aW9ucyBlbnZpcm9ubWVudCB1c2VkIGZvciB0aGUgam9iLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGVudmlyb25tZW50IHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwcmltYXJ5IG9yIGluaXRpYWwgam9iIG9mIGEgVGFza1dvcmtmbG93LlxuICpcbiAqIEBpbXBsZW1lbnRzIHtKb2J9XG4gKi9cbmV4cG9ydCBjbGFzcyBUYXNrV29ya2Zsb3dKb2IgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgcnVuc09uPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBydW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHN0ZXBzOiBKb2JTdGVwW107XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBKb2JTdGVwT3V0cHV0PiB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0cz86IEpvYkRlZmF1bHRzIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdGltZW91dE1pbnV0ZXM/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVyPzogQ29udGFpbmVyT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VzPzogUmVjb3JkPHN0cmluZywgQ29udGFpbmVyT3B0aW9ucz4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSB0b29scz86IFRvb2xzIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSBwZXJtaXNzaW9uczogSm9iUGVybWlzc2lvbnM7XG4gIHB1YmxpYyByZWFkb25seSBjb25jdXJyZW5jeT86IHVua25vd247XG4gIHB1YmxpYyByZWFkb25seSBpZj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHN0cmF0ZWd5PzogSm9iU3RyYXRlZ3kgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY29wZSBzaG91bGQgYmUgcGFydCBvZiB0aGUgcHJvamVjdCB0aGUgVGFzayBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gdGFzayB0aGUgbWFpbiB0YXNrIHRoYXQgaXMgcnVuIGFzIHBhcnQgb2YgdGhpcyBqb2IuXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBUYXNrV29ya2Zsb3dKb2IuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgdGFzazogVGFzaywgb3B0aW9uczogVGFza1dvcmtmbG93Sm9iT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBgJHtuZXcudGFyZ2V0Lm5hbWV9IyR7dGFzay5uYW1lfWApO1xuICAgIGNvbnN0IHByZUNoZWNrb3V0U3RlcHMgPSBvcHRpb25zLnByZUNoZWNrb3V0U3RlcHMgPz8gW107XG5cbiAgICBjb25zdCBjaGVja291dFdpdGg6IHsgbGZzPzogYm9vbGVhbjsgc3VibW9kdWxlcz86IENoZWNrb3V0U3VibW9kdWxlcyB9ID0ge307XG4gICAgaWYgKG9wdGlvbnMuZG93bmxvYWRMZnMpIHtcbiAgICAgIGNoZWNrb3V0V2l0aC5sZnMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmNoZWNrb3V0U3VibW9kdWxlcyAmJlxuICAgICAgb3B0aW9ucy5jaGVja291dFN1Ym1vZHVsZXMgIT09IENoZWNrb3V0U3VibW9kdWxlcy5ESVNBQkxFRFxuICAgICkge1xuICAgICAgY2hlY2tvdXRXaXRoLnN1Ym1vZHVsZXMgPSBvcHRpb25zLmNoZWNrb3V0U3VibW9kdWxlcztcbiAgICB9XG4gICAgLy8gJ2NoZWNrb3V0V2l0aCcgY2FuIG92ZXJyaWRlICdsZnMnIGFuZCAnc3VibW9kdWxlcydcbiAgICBPYmplY3QuYXNzaWduKGNoZWNrb3V0V2l0aCwgb3B0aW9ucy5jaGVja291dFdpdGggPz8ge30pO1xuXG4gICAgY29uc3QgcHJlQnVpbGRTdGVwcyA9IG9wdGlvbnMucHJlQnVpbGRTdGVwcyA/PyBbXTtcbiAgICBjb25zdCBwb3N0QnVpbGRTdGVwcyA9IG9wdGlvbnMucG9zdEJ1aWxkU3RlcHMgPz8gW107XG4gICAgY29uc3QgZ2l0SWRlbnRpdHkgPSBvcHRpb25zLmdpdElkZW50aXR5ID8/IERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUjtcblxuICAgIGlmIChvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSkge1xuICAgICAgZW5zdXJlTm90SGlkZGVuUGF0aChvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSwgXCJhcnRpZmFjdHNEaXJlY3RvcnlcIik7XG4gICAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKFxuICAgICAgICBXb3JrZmxvd1N0ZXBzLnVwbG9hZEFydGlmYWN0KHtcbiAgICAgICAgICAvLyBTZXR0aW5nIHRvIGFsd2F5cyB3aWxsIGVuc3VyZSB0aGF0IHRoaXMgc3RlcCB3aWxsIHJ1biBldmVuIGlmXG4gICAgICAgICAgLy8gdGhlIHByZXZpb3VzIG9uZXMgaGF2ZSBmYWlsZWQgKGUuZy4gY292ZXJhZ2UgcmVwb3J0LCBpbnRlcm5hbCBsb2dzLCBldGMpXG4gICAgICAgICAgaWY6IFwiYWx3YXlzKClcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5zT25JbnB1dHMgPSBmaWx0ZXJlZFJ1bnNPbk9wdGlvbnMoXG4gICAgICBvcHRpb25zLnJ1bnNPbixcbiAgICAgIG9wdGlvbnMucnVuc09uR3JvdXAsXG4gICAgKTtcbiAgICB0aGlzLnJ1bnNPbiA9IChydW5zT25JbnB1dHMgYXMgeyBydW5zT246IHN0cmluZ1tdIH0pPy5ydW5zT247XG4gICAgdGhpcy5ydW5zT25Hcm91cCA9IChcbiAgICAgIHJ1bnNPbklucHV0cyBhcyB7IHJ1bnNPbkdyb3VwOiBHcm91cFJ1bm5lck9wdGlvbnMgfVxuICAgICk/LnJ1bnNPbkdyb3VwO1xuICAgIHRoaXMuY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXI7XG4gICAgdGhpcy5lbnYgPSBvcHRpb25zLmVudjtcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gb3B0aW9ucy5wZXJtaXNzaW9ucztcbiAgICB0aGlzLmRlZmF1bHRzID0gb3B0aW9ucz8uam9iRGVmYXVsdHM7XG4gICAgdGhpcy5pZiA9IG9wdGlvbnMuY29uZGl0aW9uO1xuICAgIHRoaXMub3V0cHV0cyA9IG9wdGlvbnMub3V0cHV0cztcbiAgICB0aGlzLmVudmlyb25tZW50ID0gb3B0aW9ucy5lbnZpcm9ubWVudDtcbiAgICB0aGlzLnN0ZXBzID0gW1xuICAgICAgLi4ucHJlQ2hlY2tvdXRTdGVwcyxcblxuICAgICAgLy8gY2hlY2sgb3V0IHNvdXJjZXMuXG4gICAgICBXb3JrZmxvd1N0ZXBzLmNoZWNrb3V0KHsgd2l0aDogY2hlY2tvdXRXaXRoIH0pLFxuXG4gICAgICAvLyBzZXRzIGdpdCBpZGVudGl0eSBzbyB3ZSBjYW4gcHVzaCBsYXRlclxuICAgICAgV29ya2Zsb3dTdGVwcy5zZXR1cEdpdElkZW50aXR5KHsgZ2l0SWRlbnRpdHkgfSksXG5cbiAgICAgIC4uLnByZUJ1aWxkU3RlcHMsXG5cbiAgICAgIC8vIHJ1biB0aGUgbWFpbiBidWlsZCB0YXNrXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRhc2submFtZSxcbiAgICAgICAgcnVuOiB0aGlzLnByb2plY3QucnVuVGFza0NvbW1hbmQodGFzayksXG4gICAgICB9LFxuXG4gICAgICAuLi5wb3N0QnVpbGRTdGVwcyxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0b0pTT04oKTogSm9iIHtcbiAgICByZXR1cm4ge1xuICAgICAgcnVuc09uOiB0aGlzLnJ1bnNPbixcbiAgICAgIHJ1bnNPbkdyb3VwOiB0aGlzLnJ1bnNPbkdyb3VwLFxuICAgICAgc3RlcHM6IHRoaXMuc3RlcHMsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cyxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBkZWZhdWx0czogdGhpcy5kZWZhdWx0cyxcbiAgICAgIHRpbWVvdXRNaW51dGVzOiB0aGlzLnRpbWVvdXRNaW51dGVzLFxuICAgICAgY29udGludWVPbkVycm9yOiB0aGlzLmNvbnRpbnVlT25FcnJvcixcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXIsXG4gICAgICBzZXJ2aWNlczogdGhpcy5zZXJ2aWNlcyxcbiAgICAgIHRvb2xzOiB0aGlzLnRvb2xzLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgbmVlZHM6IHRoaXMubmVlZHMsXG4gICAgICBwZXJtaXNzaW9uczogdGhpcy5wZXJtaXNzaW9ucyxcbiAgICAgIGNvbmN1cnJlbmN5OiB0aGlzLmNvbmN1cnJlbmN5LFxuICAgICAgaWY6IHRoaXMuaWYsXG4gICAgICBzdHJhdGVneTogdGhpcy5zdHJhdGVneSxcbiAgICB9O1xuICB9XG59XG4iXX0=