projen
Version:
CDK for software projects
105 lines • 18.4 kB
JavaScript
"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=