@pagopa/dx-cli 0.23.5 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/bin/index.js +13 -3
- package/dist/adapters/azure/cloud-account-service.js +32 -1
- package/dist/adapters/azure-monitor/instrumentation.d.ts +26 -0
- package/dist/adapters/azure-monitor/instrumentation.js +84 -0
- package/dist/adapters/azure-monitor/telemetry.d.ts +19 -0
- package/dist/adapters/azure-monitor/telemetry.js +28 -0
- package/dist/adapters/commander/commands/add.d.ts +32 -7
- package/dist/adapters/commander/commands/add.js +198 -15
- package/dist/adapters/commander/commands/doctor.js +4 -1
- package/dist/adapters/octokit/index.d.ts +12 -0
- package/dist/adapters/octokit/index.js +26 -2
- package/dist/adapters/pagopa-technology/azure-authorization.js +11 -11
- package/dist/adapters/plop/actions/setup-pnpm.js +5 -1
- package/dist/adapters/plop/actions/sync-repository-environments.d.ts +15 -0
- package/dist/adapters/plop/actions/sync-repository-environments.js +98 -0
- package/dist/adapters/plop/generators/environment/actions.js +4 -1
- package/dist/adapters/plop/generators/environment/index.d.ts +3 -3
- package/dist/adapters/plop/generators/environment/index.js +6 -3
- package/dist/adapters/plop/generators/environment/prompts.d.ts +38 -0
- package/dist/adapters/plop/generators/environment/prompts.js +236 -91
- package/dist/adapters/plop/index.d.ts +3 -3
- package/dist/adapters/plop/index.js +5 -5
- package/dist/domain/authorization.d.ts +1 -0
- package/dist/domain/authorization.js +5 -4
- package/dist/index.js +132 -8
- package/package.json +11 -3
- package/templates/monorepo/.pre-commit-config.yaml.hbs +0 -8
|
@@ -152,23 +152,23 @@ const ensureIdentity = (jsonContent, identityId) => {
|
|
|
152
152
|
},
|
|
153
153
|
};
|
|
154
154
|
};
|
|
155
|
-
const REPO_OWNER = "pagopa";
|
|
156
155
|
const REPO_NAME = "eng-azure-authorization";
|
|
157
156
|
const BASE_BRANCH = "main";
|
|
158
157
|
export const makeAzureAuthorizationService = (gitHubService) => ({
|
|
159
158
|
requestAuthorization(input) {
|
|
160
159
|
const logger = getLogger(["dx-cli", "pagopa-azure-authorization"]);
|
|
161
|
-
const { bootstrapIdentityId, envShort, prefix, repoName, subscriptionName, } = input;
|
|
160
|
+
const { bootstrapIdentityId, envShort, prefix, repoName, repoOwner, subscriptionName, } = input;
|
|
161
|
+
const authorizationRepoOwner = repoOwner;
|
|
162
162
|
const filePath = `src/azure-subscriptions/subscriptions/${subscriptionName}/terraform.tfvars.json`;
|
|
163
163
|
const branchName = `feats/add-${repoName}-${subscriptionName}-bootstrap-identity`;
|
|
164
164
|
return (
|
|
165
165
|
// Step 1: Read file from main to determine if changes are needed
|
|
166
166
|
ResultAsync.fromPromise(gitHubService.getFileContent({
|
|
167
|
-
owner:
|
|
167
|
+
owner: authorizationRepoOwner,
|
|
168
168
|
path: filePath,
|
|
169
169
|
ref: BASE_BRANCH,
|
|
170
170
|
repo: REPO_NAME,
|
|
171
|
-
}), () => new AuthorizationError(`Unable to get ${filePath} in ${
|
|
171
|
+
}), () => new AuthorizationError(`Unable to get ${filePath} in ${authorizationRepoOwner}/${REPO_NAME}`))
|
|
172
172
|
.orTee((error) => {
|
|
173
173
|
logger.error(error.message);
|
|
174
174
|
})
|
|
@@ -202,9 +202,9 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
|
|
|
202
202
|
return (ResultAsync.fromPromise(gitHubService.createBranch({
|
|
203
203
|
branchName,
|
|
204
204
|
fromRef: BASE_BRANCH,
|
|
205
|
-
owner:
|
|
205
|
+
owner: authorizationRepoOwner,
|
|
206
206
|
repo: REPO_NAME,
|
|
207
|
-
}), () => new AuthorizationError(`Unable to create branch ${branchName} in ${
|
|
207
|
+
}), () => new AuthorizationError(`Unable to create branch ${branchName} in ${authorizationRepoOwner}/${REPO_NAME}`))
|
|
208
208
|
.orTee((error) => {
|
|
209
209
|
logger.error(error.message);
|
|
210
210
|
})
|
|
@@ -213,11 +213,11 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
|
|
|
213
213
|
branch: branchName,
|
|
214
214
|
content: JSON.stringify(updatedJson, null, 2),
|
|
215
215
|
message,
|
|
216
|
-
owner:
|
|
216
|
+
owner: authorizationRepoOwner,
|
|
217
217
|
path: filePath,
|
|
218
218
|
repo: REPO_NAME,
|
|
219
219
|
sha,
|
|
220
|
-
}), () => new AuthorizationError(`Unable to update ${filePath} on branch ${branchName} in ${
|
|
220
|
+
}), () => new AuthorizationError(`Unable to update ${filePath} on branch ${branchName} in ${authorizationRepoOwner}/${REPO_NAME}`)))
|
|
221
221
|
.orTee((error) => {
|
|
222
222
|
logger.error(error.message);
|
|
223
223
|
})
|
|
@@ -226,10 +226,10 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
|
|
|
226
226
|
base: BASE_BRANCH,
|
|
227
227
|
body,
|
|
228
228
|
head: branchName,
|
|
229
|
-
owner:
|
|
229
|
+
owner: authorizationRepoOwner,
|
|
230
230
|
repo: REPO_NAME,
|
|
231
231
|
title,
|
|
232
|
-
}), () => new AuthorizationError(`Unable to create pull request from ${branchName} to ${BASE_BRANCH} in ${
|
|
232
|
+
}), () => new AuthorizationError(`Unable to create pull request from ${branchName} to ${BASE_BRANCH} in ${authorizationRepoOwner}/${REPO_NAME}`)))
|
|
233
233
|
.orTee((error) => {
|
|
234
234
|
logger.error(error.message);
|
|
235
235
|
})
|
|
@@ -237,4 +237,4 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
|
|
|
237
237
|
}));
|
|
238
238
|
},
|
|
239
239
|
});
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9wYWdvcGEtdGVjaG5vbG9neS9henVyZS1hdXRob3JpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixtQ0FBbUMsR0FFcEMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixpQkFBaUIsRUFBRSxDQUFDO1NBQ2pCLE1BQU0sQ0FBQztRQUNOLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7U0FDRCxLQUFLLEVBQUU7SUFDVixNQUFNLEVBQUUsQ0FBQztTQUNOLEtBQUssQ0FDSixDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQ1g7U0FDQSxRQUFRLEVBQUU7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aUJBQ0EsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDaEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYWdvUEEgVGVjaG5vbG9neSBBenVyZSBBdXRob3JpemF0aW9uIEFkYXB0ZXJcbiAqXG4gKiBJbXBsZW1lbnRzIHRoZSBBdXRob3JpemF0aW9uU2VydmljZSBpbnRlcmZhY2UgZm9yIHRoZSBQYWdvUEEgQXp1cmVcbiAqIGF1dGhvcml6YXRpb24gd29ya2Zsb3cuIEVuY2Fwc3VsYXRlcyBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgZGV0YWlsczpcbiAqIHRoZSB0YXJnZXQgR2l0SHViIHJlcG9zaXRvcnksIGZpbGUgcGF0aHMsIGJyYW5jaCBuYW1pbmcsIEpTT04gZmlsZVxuICogcGFyc2luZywgYW5kIHB1bGwgcmVxdWVzdCBjcmVhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgZXJyLCBlcnJBc3luYywgb2ssIG9rQXN5bmMsIFJlc3VsdCwgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbkVycm9yLFxuICBBdXRob3JpemF0aW9uUmVzdWx0LFxuICBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgSW52YWxpZEF1dGhvcml6YXRpb25GaWxlRm9ybWF0RXJyb3IsXG4gIFJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXQsXG59IGZyb20gXCIuLi8uLi9kb21haW4vYXV0aG9yaXphdGlvbi5qc1wiO1xuaW1wb3J0IHsgR2l0SHViU2VydmljZSB9IGZyb20gXCIuLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0dST1VQX1NQRUNTLFxuICBtYWtlQXp1cmVBZEdyb3VwTmFtZSxcbn0gZnJvbSBcIi4vYXp1cmUtYXV0aG9yaXphdGlvbi1jb25maWcuanNcIjtcblxuY29uc3QgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZGlyZWN0b3J5X3JlYWRlcnM6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBzZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZTogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgIH0pXG4gICAgICAubG9vc2UoKSxcbiAgICBncm91cHM6IHpcbiAgICAgIC5hcnJheShcbiAgICAgICAgelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgbWVtYmVyczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgICAgICByb2xlczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5sb29zZSgpLFxuICAgICAgKVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0d28gcm9sZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQgKHNhbWUgcm9sZXMsIG9yZGVyLWluZGVwZW5kZW50KS5cbiAqL1xuY29uc3Qgcm9sZXNBcmVFcXVhbCA9IChcbiAgcm9sZXMxOiByZWFkb25seSBzdHJpbmdbXSxcbiAgcm9sZXMyOiByZWFkb25seSBzdHJpbmdbXSxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAocm9sZXMxLmxlbmd0aCAhPT0gcm9sZXMyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzb3J0ZWQxID0gWy4uLnJvbGVzMV0uc29ydCgpO1xuICBjb25zdCBzb3J0ZWQyID0gWy4uLnJvbGVzMl0uc29ydCgpO1xuICByZXR1cm4gc29ydGVkMS5ldmVyeSgocm9sZSwgaWR4KSA9PiByb2xlID09PSBzb3J0ZWQyW2lkeF0pO1xufTtcblxuLyoqXG4gKiBBZGRzIG9yIHVwZGF0ZXMgdGhlIEFEIGdyb3VwcyBhcnJheSBpbiB0aGUgcGFyc2VkIGF1dGhvcml6YXRpb24gSlNPTi5cbiAqIC0gTWlzc2luZyBkZWZhdWx0IGdyb3VwcyBhcmUgYWRkZWQgd2l0aCBlbXB0eSBtZW1iZXJzLlxuICogLSBFeGlzdGluZyBncm91cHMgd2l0aCB3cm9uZyByb2xlcyBoYXZlIHRoZWlyIHJvbGVzIHVwZGF0ZWQ7IG1lbWJlcnMgYXJlIHByZXNlcnZlZC5cbiAqIC0gQ3VzdG9tIChub24tZGVmYXVsdCkgZ3JvdXBzIGFyZSBwcmVzZXJ2ZWQgdW5jaGFuZ2VkLlxuICogUmV0dXJucyB0aGUgdXBkYXRlZCBKU09OIGFsb25nIHdpdGggYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBhbnl0aGluZyBjaGFuZ2VkLlxuICovXG5jb25zdCB1cHNlcnRHcm91cHMgPSAoXG4gIGpzb25Db250ZW50OiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPixcbiAgcHJlZml4OiBzdHJpbmcsXG4gIGVudlNob3J0OiBzdHJpbmcsXG4pOiB7XG4gIGdyb3Vwc0NoYW5nZWQ6IGJvb2xlYW47XG4gIGpzb246IHouaW5mZXI8dHlwZW9mIGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWE+O1xufSA9PiB7XG4gIGNvbnN0IGV4cGVjdGVkQnlOYW1lID0gbmV3IE1hcChcbiAgICBERUZBVUxUX0dST1VQX1NQRUNTLm1hcCgoc3BlYykgPT4gW1xuICAgICAgbWFrZUF6dXJlQWRHcm91cE5hbWUocHJlZml4LCBlbnZTaG9ydCwgc3BlYy5ncm91cE5hbWUpLFxuICAgICAgc3BlYyxcbiAgICBdKSxcbiAgKTtcblxuICBjb25zdCBleGlzdGluZ0dyb3VwcyA9IGpzb25Db250ZW50Lmdyb3VwcyA/PyBbXTtcbiAgY29uc3Qgc2VlbkRlZmF1bHRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gV2FsayBleGlzdGluZyBncm91cHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIsIHVwZGF0aW5nIHJvbGVzIHdoZXJlIG5lZWRlZFxuICBjb25zdCBmaW5hbEdyb3VwczogdHlwZW9mIGV4aXN0aW5nR3JvdXBzID0gW107XG4gIGxldCBncm91cHNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBleGlzdGluZyBvZiBleGlzdGluZ0dyb3Vwcykge1xuICAgIGNvbnN0IHNwZWMgPSBleHBlY3RlZEJ5TmFtZS5nZXQoZXhpc3RpbmcubmFtZSk7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICAvLyBDdXN0b20gZ3JvdXAg4oCUIHByZXNlcnZlIGFzLWlzXG4gICAgICBmaW5hbEdyb3Vwcy5wdXNoKGV4aXN0aW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VlbkRlZmF1bHRzLmFkZChleGlzdGluZy5uYW1lKTtcbiAgICAgIGlmICghcm9sZXNBcmVFcXVhbChleGlzdGluZy5yb2xlcywgc3BlYy5yb2xlcykpIHtcbiAgICAgICAgLy8gUm9sZXMgZGlmZmVyIOKAlCB1cGRhdGUgcm9sZXMsIHByZXNlcnZlIG1lbWJlcnMgYW5kIGFueSBleHRyYSBmaWVsZHNcbiAgICAgICAgZmluYWxHcm91cHMucHVzaCh7IC4uLmV4aXN0aW5nLCByb2xlczogWy4uLnNwZWMucm9sZXNdIH0pO1xuICAgICAgICBncm91cHNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsR3JvdXBzLnB1c2goZXhpc3RpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGVuZCBtaXNzaW5nIGRlZmF1bHQgZ3JvdXBzIGF0IHRoZSBlbmRcbiAgZm9yIChjb25zdCBzcGVjIG9mIERFRkFVTFRfR1JPVVBfU1BFQ1MpIHtcbiAgICBjb25zdCBuYW1lID0gbWFrZUF6dXJlQWRHcm91cE5hbWUocHJlZml4LCBlbnZTaG9ydCwgc3BlYy5ncm91cE5hbWUpO1xuICAgIGlmICghc2VlbkRlZmF1bHRzLmhhcyhuYW1lKSkge1xuICAgICAgZmluYWxHcm91cHMucHVzaCh7IG1lbWJlcnM6IFtdLCBuYW1lLCByb2xlczogWy4uLnNwZWMucm9sZXNdIH0pO1xuICAgICAgZ3JvdXBzQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZ3JvdXBzQ2hhbmdlZCwganNvbjogeyAuLi5qc29uQ29udGVudCwgZ3JvdXBzOiBmaW5hbEdyb3VwcyB9IH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyBhbmQgdmFsaWRhdGVzIHRoZSBhdXRob3JpemF0aW9uIGZpbGUgY29udGVudCAoSlNPTiBwYXJzaW5nICsgc2NoZW1hIHZhbGlkYXRpb24pLlxuICovXG5jb25zdCBwYXJzZUF1dGhvcml6YXRpb25GaWxlID0gKFxuICBjb250ZW50OiBzdHJpbmcsXG4pOiBSZXN1bHQ8ei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sIEF1dGhvcml6YXRpb25FcnJvcj4gPT4ge1xuICBsZXQgcGFyc2VkO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBlcnIoXG4gICAgICBuZXcgSW52YWxpZEF1dGhvcml6YXRpb25GaWxlRm9ybWF0RXJyb3IoXCJGaWxlIGNvbnRlbnQgaXMgbm90IHZhbGlkIEpTT05cIiksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWEuc2FmZVBhcnNlKHBhcnNlZCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gZXJyKFxuICAgICAgbmV3IEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIGRpcmVjdG9yeV9yZWFkZXJzLnNlcnZpY2VfcHJpbmNpcGFsc19uYW1lIGxpc3RcIixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBvayhyZXN1bHQuZGF0YSk7XG59O1xuXG4vKipcbiAqIFByb2R1Y2VzIGNvbW1pdCBtZXNzYWdlLCBQUiB0aXRsZSwgYW5kIFBSIGJvZHkgdGFpbG9yZWQgdG8gd2hhdCBhY3R1YWxseSBjaGFuZ2VkLlxuICovXG5jb25zdCBtYWtlQ2hhbmdlRGVzY3JpcHRpb24gPSAoXG4gIHN1YnNjcmlwdGlvbk5hbWU6IHN0cmluZyxcbiAgYm9vdHN0cmFwSWRlbnRpdHlJZDogc3RyaW5nLFxuICBpZGVudGl0eUFkZGVkOiBib29sZWFuLFxuICBncm91cHNDaGFuZ2VkOiBib29sZWFuLFxuKTogeyBib2R5OiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9ID0+IHtcbiAgaWYgKGlkZW50aXR5QWRkZWQgJiYgZ3JvdXBzQ2hhbmdlZCkge1xuICAgIGNvbnN0IHRpdGxlID0gYEFkZCBib290c3RyYXAgaWRlbnRpdHkgYW5kIEFEIGdyb3VwcyBmb3IgJHtzdWJzY3JpcHRpb25OYW1lfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IGBUaGlzIFBSIGFkZHMgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSBcXGAke2Jvb3RzdHJhcElkZW50aXR5SWR9XFxgIHRvIHRoZSBkaXJlY3RvcnkgcmVhZGVycyBhbmQgY29uZmlndXJlcyBBRCBncm91cHMgZm9yIHN1YnNjcmlwdGlvbiBcXGAke3N1YnNjcmlwdGlvbk5hbWV9XFxgLmAsXG4gICAgICBtZXNzYWdlOiB0aXRsZSxcbiAgICAgIHRpdGxlLFxuICAgIH07XG4gIH1cbiAgaWYgKGlkZW50aXR5QWRkZWQpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBBZGQgYm9vdHN0cmFwIGlkZW50aXR5IGZvciAke3N1YnNjcmlwdGlvbk5hbWV9YDtcbiAgICByZXR1cm4ge1xuICAgICAgYm9keTogYFRoaXMgUFIgYWRkcyB0aGUgYm9vdHN0cmFwIGlkZW50aXR5IFxcYCR7Ym9vdHN0cmFwSWRlbnRpdHlJZH1cXGAgdG8gdGhlIGRpcmVjdG9yeSByZWFkZXJzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgICAgbWVzc2FnZTogdGl0bGUsXG4gICAgICB0aXRsZSxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHRpdGxlID0gYENvbmZpZ3VyZSBBRCBncm91cHMgZm9yICR7c3Vic2NyaXB0aW9uTmFtZX1gO1xuICByZXR1cm4ge1xuICAgIGJvZHk6IGBUaGlzIFBSIGNvbmZpZ3VyZXMgQUQgZ3JvdXBzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgIG1lc3NhZ2U6IHRpdGxlLFxuICAgIHRpdGxlLFxuICB9O1xufTtcblxuLyoqXG4gKiBFbnN1cmVzIHRoZSBnaXZlbiBpZGVudGl0eSBpcyBwcmVzZW50IGluIHRoZSBzZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSBsaXN0LlxuICogUmV0dXJucyB0aGUgKHBvc3NpYmx5IHVwZGF0ZWQpIEpTT04gYW5kIHdoZXRoZXIgdGhlIGlkZW50aXR5IHdhcyBuZXdseSBhZGRlZC5cbiAqIE5ldmVyIGZhaWxzOiBpZiB0aGUgaWRlbnRpdHkgYWxyZWFkeSBleGlzdHMgaXQgaXMgYSBuby1vcCB3aXRoIGlkZW50aXR5QWRkZWQgPSBmYWxzZS5cbiAqL1xuY29uc3QgZW5zdXJlSWRlbnRpdHkgPSAoXG4gIGpzb25Db250ZW50OiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPixcbiAgaWRlbnRpdHlJZDogc3RyaW5nLFxuKToge1xuICBpZGVudGl0eUFkZGVkOiBib29sZWFuO1xuICBqc29uOiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPjtcbn0gPT4ge1xuICBpZiAoXG4gICAganNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMuc2VydmljZV9wcmluY2lwYWxzX25hbWUuaW5jbHVkZXMoaWRlbnRpdHlJZClcbiAgKSB7XG4gICAgcmV0dXJuIHsgaWRlbnRpdHlBZGRlZDogZmFsc2UsIGpzb246IGpzb25Db250ZW50IH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlkZW50aXR5QWRkZWQ6IHRydWUsXG4gICAganNvbjoge1xuICAgICAgLi4uanNvbkNvbnRlbnQsXG4gICAgICBkaXJlY3RvcnlfcmVhZGVyczoge1xuICAgICAgICAuLi5qc29uQ29udGVudC5kaXJlY3RvcnlfcmVhZGVycyxcbiAgICAgICAgc2VydmljZV9wcmluY2lwYWxzX25hbWU6IFtcbiAgICAgICAgICAuLi5qc29uQ29udGVudC5kaXJlY3RvcnlfcmVhZGVycy5zZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSxcbiAgICAgICAgICBpZGVudGl0eUlkLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgUkVQT19PV05FUiA9IFwicGFnb3BhXCI7XG5jb25zdCBSRVBPX05BTUUgPSBcImVuZy1henVyZS1hdXRob3JpemF0aW9uXCI7XG5jb25zdCBCQVNFX0JSQU5DSCA9IFwibWFpblwiO1xuXG5leHBvcnQgY29uc3QgbWFrZUF6dXJlQXV0aG9yaXphdGlvblNlcnZpY2UgPSAoXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4pOiBBdXRob3JpemF0aW9uU2VydmljZSA9PiAoe1xuICByZXF1ZXN0QXV0aG9yaXphdGlvbihcbiAgICBpbnB1dDogUmVxdWVzdEF1dGhvcml6YXRpb25JbnB1dCxcbiAgKTogUmVzdWx0QXN5bmM8QXV0aG9yaXphdGlvblJlc3VsdCwgQXV0aG9yaXphdGlvbkVycm9yPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcInBhZ29wYS1henVyZS1hdXRob3JpemF0aW9uXCJdKTtcbiAgICBjb25zdCB7XG4gICAgICBib290c3RyYXBJZGVudGl0eUlkLFxuICAgICAgZW52U2hvcnQsXG4gICAgICBwcmVmaXgsXG4gICAgICByZXBvTmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbk5hbWUsXG4gICAgfSA9IGlucHV0O1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYHNyYy9henVyZS1zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25OYW1lfS90ZXJyYWZvcm0udGZ2YXJzLmpzb25gO1xuICAgIGNvbnN0IGJyYW5jaE5hbWUgPSBgZmVhdHMvYWRkLSR7cmVwb05hbWV9LSR7c3Vic2NyaXB0aW9uTmFtZX0tYm9vdHN0cmFwLWlkZW50aXR5YDtcblxuICAgIHJldHVybiAoXG4gICAgICAvLyBTdGVwIDE6IFJlYWQgZmlsZSBmcm9tIG1haW4gdG8gZGV0ZXJtaW5lIGlmIGNoYW5nZXMgYXJlIG5lZWRlZFxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGdpdEh1YlNlcnZpY2UuZ2V0RmlsZUNvbnRlbnQoe1xuICAgICAgICAgIG93bmVyOiBSRVBPX09XTkVSLFxuICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgIHJlZjogQkFTRV9CUkFOQ0gsXG4gICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICB9KSxcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBnZXQgJHtmaWxlUGF0aH0gaW4gJHtSRVBPX09XTkVSfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICksXG4gICAgICApXG4gICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIFN0ZXAgMjogUGFyc2UgZmlsZSwgZW5zdXJlIGlkZW50aXR5LCB1cHNlcnQgZ3JvdXBzLCBkZXRlY3Qgbm8tb3BcbiAgICAgICAgLmFuZFRoZW4oKHsgY29udGVudCwgc2hhIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlQXV0aG9yaXphdGlvbkZpbGUoY29udGVudCk7XG4gICAgICAgICAgaWYgKHBhcnNlUmVzdWx0LmlzRXJyKCkpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZhaWxlZCB0byBtb2RpZnkgdGZ2YXJzXCIsIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHBhcnNlUmVzdWx0LmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBlcnJBc3luYyhwYXJzZVJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmVzdWx0LnZhbHVlO1xuXG4gICAgICAgICAgY29uc3QgeyBpZGVudGl0eUFkZGVkLCBqc29uOiB3aXRoSWRlbnRpdHkgfSA9IGVuc3VyZUlkZW50aXR5KFxuICAgICAgICAgICAgcGFyc2VkLFxuICAgICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghaWRlbnRpdHlBZGRlZCkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJJZGVudGl0eSBhbHJlYWR5IGV4aXN0cywgY2hlY2tpbmcgZ3JvdXBzXCIsIHtcbiAgICAgICAgICAgICAgaWRlbnRpdHlJZDogYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBncm91cHNDaGFuZ2VkLCBqc29uOiB1cGRhdGVkSnNvbiB9ID0gdXBzZXJ0R3JvdXBzKFxuICAgICAgICAgICAgd2l0aElkZW50aXR5LFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgZW52U2hvcnQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghaWRlbnRpdHlBZGRlZCAmJiAhZ3JvdXBzQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gTm90aGluZyB0byBkbyDigJQgbm8gYnJhbmNoIGNyZWF0ZWQsIG5vIFBSIG5lZWRlZC5cbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiTm8gY2hhbmdlcyBuZWVkZWQsIHNraXBwaW5nIFBSXCIsIHtcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb2tBc3luYyhuZXcgQXV0aG9yaXphdGlvblJlc3VsdCgpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGJvZHksIG1lc3NhZ2UsIHRpdGxlIH0gPSBtYWtlQ2hhbmdlRGVzY3JpcHRpb24oXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICAgIGlkZW50aXR5QWRkZWQsXG4gICAgICAgICAgICBncm91cHNDaGFuZ2VkLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBTdGVwIDM6IENyZWF0ZSBicmFuY2ggb25seSB3aGVuIGNoYW5nZXMgYXJlIG5lZWRlZFxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVCcmFuY2goe1xuICAgICAgICAgICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgICAgICAgICAgZnJvbVJlZjogQkFTRV9CUkFOQ0gsXG4gICAgICAgICAgICAgICAgb3duZXI6IFJFUE9fT1dORVIsXG4gICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byBjcmVhdGUgYnJhbmNoICR7YnJhbmNoTmFtZX0gaW4gJHtSRVBPX09XTkVSfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC8vIFN0ZXAgNDogVXBkYXRlIGZpbGUgb24gdGhlIGJyYW5jaCB1c2luZyB0aGUgU0hBIHJlYWQgZnJvbSBtYWluXG4gICAgICAgICAgICAgIC5hbmRUaGVuKCgpID0+XG4gICAgICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLnVwZGF0ZUZpbGUoe1xuICAgICAgICAgICAgICAgICAgICBicmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRKc29uLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgb3duZXI6IFJFUE9fT1dORVIsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgICByZXBvOiBSRVBPX05BTUUsXG4gICAgICAgICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBgVW5hYmxlIHRvIHVwZGF0ZSAke2ZpbGVQYXRofSBvbiBicmFuY2ggJHticmFuY2hOYW1lfSBpbiAke1JFUE9fT1dORVJ9LyR7UkVQT19OQU1FfWAsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAvLyBTdGVwIDU6IENyZWF0ZSBQUlxuICAgICAgICAgICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICAgICAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVQdWxsUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgICAgIGJhc2U6IEJBU0VfQlJBTkNILFxuICAgICAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgICAgICBoZWFkOiBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgICAgICBvd25lcjogUkVQT19PV05FUixcbiAgICAgICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBgVW5hYmxlIHRvIGNyZWF0ZSBwdWxsIHJlcXVlc3QgZnJvbSAke2JyYW5jaE5hbWV9IHRvICR7QkFTRV9CUkFOQ0h9IGluICR7UkVQT19PV05FUn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5tYXAoKHByKSA9PiBuZXcgQXV0aG9yaXphdGlvblJlc3VsdChwci51cmwpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfSxcbn0pO1xuIl19
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9wYWdvcGEtdGVjaG5vbG9neS9henVyZS1hdXRob3JpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixtQ0FBbUMsR0FFcEMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixpQkFBaUIsRUFBRSxDQUFDO1NBQ2pCLE1BQU0sQ0FBQztRQUNOLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7U0FDRCxLQUFLLEVBQUU7SUFDVixNQUFNLEVBQUUsQ0FBQztTQUNOLEtBQUssQ0FDSixDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQ1g7U0FDQSxRQUFRLEVBQUU7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SSxTQUFTLEVBQUUsQ0FDL0csQ0FDSixDQUNGO2lCQUNBLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hELENBQUM7UUFDSixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFnb1BBIFRlY2hub2xvZ3kgQXp1cmUgQXV0aG9yaXphdGlvbiBBZGFwdGVyXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXV0aG9yaXphdGlvblNlcnZpY2UgaW50ZXJmYWNlIGZvciB0aGUgUGFnb1BBIEF6dXJlXG4gKiBhdXRob3JpemF0aW9uIHdvcmtmbG93LiBFbmNhcHN1bGF0ZXMgYWxsIHBsYXRmb3JtLXNwZWNpZmljIGRldGFpbHM6XG4gKiB0aGUgdGFyZ2V0IEdpdEh1YiByZXBvc2l0b3J5LCBmaWxlIHBhdGhzLCBicmFuY2ggbmFtaW5nLCBKU09OIGZpbGVcbiAqIHBhcnNpbmcsIGFuZCBwdWxsIHJlcXVlc3QgY3JlYXRpb24uXG4gKi9cblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IGVyciwgZXJyQXN5bmMsIG9rLCBva0FzeW5jLCBSZXN1bHQsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25FcnJvcixcbiAgQXV0aG9yaXphdGlvblJlc3VsdCxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gIEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yLFxuICBSZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0LFxufSBmcm9tIFwiLi4vLi4vZG9tYWluL2F1dGhvcml6YXRpb24uanNcIjtcbmltcG9ydCB7IEdpdEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9HUk9VUF9TUEVDUyxcbiAgbWFrZUF6dXJlQWRHcm91cE5hbWUsXG59IGZyb20gXCIuL2F6dXJlLWF1dGhvcml6YXRpb24tY29uZmlnLmpzXCI7XG5cbmNvbnN0IGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRpcmVjdG9yeV9yZWFkZXJzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2VydmljZV9wcmluY2lwYWxzX25hbWU6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICB9KVxuICAgICAgLmxvb3NlKCksXG4gICAgZ3JvdXBzOiB6XG4gICAgICAuYXJyYXkoXG4gICAgICAgIHpcbiAgICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgICAgIG1lbWJlcnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICAgICAgcm9sZXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAubG9vc2UoKSxcbiAgICAgIClcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdHdvIHJvbGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50IChzYW1lIHJvbGVzLCBvcmRlci1pbmRlcGVuZGVudCkuXG4gKi9cbmNvbnN0IHJvbGVzQXJlRXF1YWwgPSAoXG4gIHJvbGVzMTogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHJvbGVzMjogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHJvbGVzMS5sZW5ndGggIT09IHJvbGVzMi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgc29ydGVkMSA9IFsuLi5yb2xlczFdLnNvcnQoKTtcbiAgY29uc3Qgc29ydGVkMiA9IFsuLi5yb2xlczJdLnNvcnQoKTtcbiAgcmV0dXJuIHNvcnRlZDEuZXZlcnkoKHJvbGUsIGlkeCkgPT4gcm9sZSA9PT0gc29ydGVkMltpZHhdKTtcbn07XG5cbi8qKlxuICogQWRkcyBvciB1cGRhdGVzIHRoZSBBRCBncm91cHMgYXJyYXkgaW4gdGhlIHBhcnNlZCBhdXRob3JpemF0aW9uIEpTT04uXG4gKiAtIE1pc3NpbmcgZGVmYXVsdCBncm91cHMgYXJlIGFkZGVkIHdpdGggZW1wdHkgbWVtYmVycy5cbiAqIC0gRXhpc3RpbmcgZ3JvdXBzIHdpdGggd3Jvbmcgcm9sZXMgaGF2ZSB0aGVpciByb2xlcyB1cGRhdGVkOyBtZW1iZXJzIGFyZSBwcmVzZXJ2ZWQuXG4gKiAtIEN1c3RvbSAobm9uLWRlZmF1bHQpIGdyb3VwcyBhcmUgcHJlc2VydmVkIHVuY2hhbmdlZC5cbiAqIFJldHVybnMgdGhlIHVwZGF0ZWQgSlNPTiBhbG9uZyB3aXRoIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYW55dGhpbmcgY2hhbmdlZC5cbiAqL1xuY29uc3QgdXBzZXJ0R3JvdXBzID0gKFxuICBqc29uQ29udGVudDogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sXG4gIHByZWZpeDogc3RyaW5nLFxuICBlbnZTaG9ydDogc3RyaW5nLFxuKToge1xuICBncm91cHNDaGFuZ2VkOiBib29sZWFuO1xuICBqc29uOiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPjtcbn0gPT4ge1xuICBjb25zdCBleHBlY3RlZEJ5TmFtZSA9IG5ldyBNYXAoXG4gICAgREVGQVVMVF9HUk9VUF9TUEVDUy5tYXAoKHNwZWMpID0+IFtcbiAgICAgIG1ha2VBenVyZUFkR3JvdXBOYW1lKHByZWZpeCwgZW52U2hvcnQsIHNwZWMuZ3JvdXBOYW1lKSxcbiAgICAgIHNwZWMsXG4gICAgXSksXG4gICk7XG5cbiAgY29uc3QgZXhpc3RpbmdHcm91cHMgPSBqc29uQ29udGVudC5ncm91cHMgPz8gW107XG4gIGNvbnN0IHNlZW5EZWZhdWx0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vIFdhbGsgZXhpc3RpbmcgZ3JvdXBzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLCB1cGRhdGluZyByb2xlcyB3aGVyZSBuZWVkZWRcbiAgY29uc3QgZmluYWxHcm91cHM6IHR5cGVvZiBleGlzdGluZ0dyb3VwcyA9IFtdO1xuICBsZXQgZ3JvdXBzQ2hhbmdlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgZXhpc3Rpbmcgb2YgZXhpc3RpbmdHcm91cHMpIHtcbiAgICBjb25zdCBzcGVjID0gZXhwZWN0ZWRCeU5hbWUuZ2V0KGV4aXN0aW5nLm5hbWUpO1xuICAgIGlmICghc3BlYykge1xuICAgICAgLy8gQ3VzdG9tIGdyb3VwIOKAlCBwcmVzZXJ2ZSBhcy1pc1xuICAgICAgZmluYWxHcm91cHMucHVzaChleGlzdGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5EZWZhdWx0cy5hZGQoZXhpc3RpbmcubmFtZSk7XG4gICAgICBpZiAoIXJvbGVzQXJlRXF1YWwoZXhpc3Rpbmcucm9sZXMsIHNwZWMucm9sZXMpKSB7XG4gICAgICAgIC8vIFJvbGVzIGRpZmZlciDigJQgdXBkYXRlIHJvbGVzLCBwcmVzZXJ2ZSBtZW1iZXJzIGFuZCBhbnkgZXh0cmEgZmllbGRzXG4gICAgICAgIGZpbmFsR3JvdXBzLnB1c2goeyAuLi5leGlzdGluZywgcm9sZXM6IFsuLi5zcGVjLnJvbGVzXSB9KTtcbiAgICAgICAgZ3JvdXBzQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaW5hbEdyb3Vwcy5wdXNoKGV4aXN0aW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBcHBlbmQgbWlzc2luZyBkZWZhdWx0IGdyb3VwcyBhdCB0aGUgZW5kXG4gIGZvciAoY29uc3Qgc3BlYyBvZiBERUZBVUxUX0dST1VQX1NQRUNTKSB7XG4gICAgY29uc3QgbmFtZSA9IG1ha2VBenVyZUFkR3JvdXBOYW1lKHByZWZpeCwgZW52U2hvcnQsIHNwZWMuZ3JvdXBOYW1lKTtcbiAgICBpZiAoIXNlZW5EZWZhdWx0cy5oYXMobmFtZSkpIHtcbiAgICAgIGZpbmFsR3JvdXBzLnB1c2goeyBtZW1iZXJzOiBbXSwgbmFtZSwgcm9sZXM6IFsuLi5zcGVjLnJvbGVzXSB9KTtcbiAgICAgIGdyb3Vwc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGdyb3Vwc0NoYW5nZWQsIGpzb246IHsgLi4uanNvbkNvbnRlbnQsIGdyb3VwczogZmluYWxHcm91cHMgfSB9O1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYW5kIHZhbGlkYXRlcyB0aGUgYXV0aG9yaXphdGlvbiBmaWxlIGNvbnRlbnQgKEpTT04gcGFyc2luZyArIHNjaGVtYSB2YWxpZGF0aW9uKS5cbiAqL1xuY29uc3QgcGFyc2VBdXRob3JpemF0aW9uRmlsZSA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogUmVzdWx0PHouaW5mZXI8dHlwZW9mIGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWE+LCBBdXRob3JpemF0aW9uRXJyb3I+ID0+IHtcbiAgbGV0IHBhcnNlZDtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZXJyKFxuICAgICAgbmV3IEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yKFwiRmlsZSBjb250ZW50IGlzIG5vdCB2YWxpZCBKU09OXCIpLFxuICAgICk7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hLnNhZmVQYXJzZShwYXJzZWQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIGVycihcbiAgICAgIG5ldyBJbnZhbGlkQXV0aG9yaXphdGlvbkZpbGVGb3JtYXRFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgZmluZCBkaXJlY3RvcnlfcmVhZGVycy5zZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSBsaXN0XCIsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gb2socmVzdWx0LmRhdGEpO1xufTtcblxuLyoqXG4gKiBQcm9kdWNlcyBjb21taXQgbWVzc2FnZSwgUFIgdGl0bGUsIGFuZCBQUiBib2R5IHRhaWxvcmVkIHRvIHdoYXQgYWN0dWFsbHkgY2hhbmdlZC5cbiAqL1xuY29uc3QgbWFrZUNoYW5nZURlc2NyaXB0aW9uID0gKFxuICBzdWJzY3JpcHRpb25OYW1lOiBzdHJpbmcsXG4gIGJvb3RzdHJhcElkZW50aXR5SWQ6IHN0cmluZyxcbiAgaWRlbnRpdHlBZGRlZDogYm9vbGVhbixcbiAgZ3JvdXBzQ2hhbmdlZDogYm9vbGVhbixcbik6IHsgYm9keTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfSA9PiB7XG4gIGlmIChpZGVudGl0eUFkZGVkICYmIGdyb3Vwc0NoYW5nZWQpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBBZGQgYm9vdHN0cmFwIGlkZW50aXR5IGFuZCBBRCBncm91cHMgZm9yICR7c3Vic2NyaXB0aW9uTmFtZX1gO1xuICAgIHJldHVybiB7XG4gICAgICBib2R5OiBgVGhpcyBQUiBhZGRzIHRoZSBib290c3RyYXAgaWRlbnRpdHkgXFxgJHtib290c3RyYXBJZGVudGl0eUlkfVxcYCB0byB0aGUgZGlyZWN0b3J5IHJlYWRlcnMgYW5kIGNvbmZpZ3VyZXMgQUQgZ3JvdXBzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgICAgbWVzc2FnZTogdGl0bGUsXG4gICAgICB0aXRsZSxcbiAgICB9O1xuICB9XG4gIGlmIChpZGVudGl0eUFkZGVkKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgQWRkIGJvb3RzdHJhcCBpZGVudGl0eSBmb3IgJHtzdWJzY3JpcHRpb25OYW1lfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IGBUaGlzIFBSIGFkZHMgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSBcXGAke2Jvb3RzdHJhcElkZW50aXR5SWR9XFxgIHRvIHRoZSBkaXJlY3RvcnkgcmVhZGVycyBmb3Igc3Vic2NyaXB0aW9uIFxcYCR7c3Vic2NyaXB0aW9uTmFtZX1cXGAuYCxcbiAgICAgIG1lc3NhZ2U6IHRpdGxlLFxuICAgICAgdGl0bGUsXG4gICAgfTtcbiAgfVxuICBjb25zdCB0aXRsZSA9IGBDb25maWd1cmUgQUQgZ3JvdXBzIGZvciAke3N1YnNjcmlwdGlvbk5hbWV9YDtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBgVGhpcyBQUiBjb25maWd1cmVzIEFEIGdyb3VwcyBmb3Igc3Vic2NyaXB0aW9uIFxcYCR7c3Vic2NyaXB0aW9uTmFtZX1cXGAuYCxcbiAgICBtZXNzYWdlOiB0aXRsZSxcbiAgICB0aXRsZSxcbiAgfTtcbn07XG5cbi8qKlxuICogRW5zdXJlcyB0aGUgZ2l2ZW4gaWRlbnRpdHkgaXMgcHJlc2VudCBpbiB0aGUgc2VydmljZV9wcmluY2lwYWxzX25hbWUgbGlzdC5cbiAqIFJldHVybnMgdGhlIChwb3NzaWJseSB1cGRhdGVkKSBKU09OIGFuZCB3aGV0aGVyIHRoZSBpZGVudGl0eSB3YXMgbmV3bHkgYWRkZWQuXG4gKiBOZXZlciBmYWlsczogaWYgdGhlIGlkZW50aXR5IGFscmVhZHkgZXhpc3RzIGl0IGlzIGEgbm8tb3Agd2l0aCBpZGVudGl0eUFkZGVkID0gZmFsc2UuXG4gKi9cbmNvbnN0IGVuc3VyZUlkZW50aXR5ID0gKFxuICBqc29uQ29udGVudDogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sXG4gIGlkZW50aXR5SWQ6IHN0cmluZyxcbik6IHtcbiAgaWRlbnRpdHlBZGRlZDogYm9vbGVhbjtcbiAganNvbjogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT47XG59ID0+IHtcbiAgaWYgKFxuICAgIGpzb25Db250ZW50LmRpcmVjdG9yeV9yZWFkZXJzLnNlcnZpY2VfcHJpbmNpcGFsc19uYW1lLmluY2x1ZGVzKGlkZW50aXR5SWQpXG4gICkge1xuICAgIHJldHVybiB7IGlkZW50aXR5QWRkZWQ6IGZhbHNlLCBqc29uOiBqc29uQ29udGVudCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpZGVudGl0eUFkZGVkOiB0cnVlLFxuICAgIGpzb246IHtcbiAgICAgIC4uLmpzb25Db250ZW50LFxuICAgICAgZGlyZWN0b3J5X3JlYWRlcnM6IHtcbiAgICAgICAgLi4uanNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMsXG4gICAgICAgIHNlcnZpY2VfcHJpbmNpcGFsc19uYW1lOiBbXG4gICAgICAgICAgLi4uanNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMuc2VydmljZV9wcmluY2lwYWxzX25hbWUsXG4gICAgICAgICAgaWRlbnRpdHlJZCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IFJFUE9fTkFNRSA9IFwiZW5nLWF6dXJlLWF1dGhvcml6YXRpb25cIjtcbmNvbnN0IEJBU0VfQlJBTkNIID0gXCJtYWluXCI7XG5cbmV4cG9ydCBjb25zdCBtYWtlQXp1cmVBdXRob3JpemF0aW9uU2VydmljZSA9IChcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbik6IEF1dGhvcml6YXRpb25TZXJ2aWNlID0+ICh7XG4gIHJlcXVlc3RBdXRob3JpemF0aW9uKFxuICAgIGlucHV0OiBSZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0LFxuICApOiBSZXN1bHRBc3luYzxBdXRob3JpemF0aW9uUmVzdWx0LCBBdXRob3JpemF0aW9uRXJyb3I+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwicGFnb3BhLWF6dXJlLWF1dGhvcml6YXRpb25cIl0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICBlbnZTaG9ydCxcbiAgICAgIHByZWZpeCxcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgcmVwb093bmVyLFxuICAgICAgc3Vic2NyaXB0aW9uTmFtZSxcbiAgICB9ID0gaW5wdXQ7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvblJlcG9Pd25lciA9IHJlcG9Pd25lcjtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGBzcmMvYXp1cmUtc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uTmFtZX0vdGVycmFmb3JtLnRmdmFycy5qc29uYDtcbiAgICBjb25zdCBicmFuY2hOYW1lID0gYGZlYXRzL2FkZC0ke3JlcG9OYW1lfS0ke3N1YnNjcmlwdGlvbk5hbWV9LWJvb3RzdHJhcC1pZGVudGl0eWA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLy8gU3RlcCAxOiBSZWFkIGZpbGUgZnJvbSBtYWluIHRvIGRldGVybWluZSBpZiBjaGFuZ2VzIGFyZSBuZWVkZWRcbiAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBnaXRIdWJTZXJ2aWNlLmdldEZpbGVDb250ZW50KHtcbiAgICAgICAgICBvd25lcjogYXV0aG9yaXphdGlvblJlcG9Pd25lcixcbiAgICAgICAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICAgICAgICByZWY6IEJBU0VfQlJBTkNILFxuICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgfSksXG4gICAgICAgICgpID0+XG4gICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gZ2V0ICR7ZmlsZVBhdGh9IGluICR7YXV0aG9yaXphdGlvblJlcG9Pd25lcn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICApLFxuICAgICAgKVxuICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9KVxuICAgICAgICAvLyBTdGVwIDI6IFBhcnNlIGZpbGUsIGVuc3VyZSBpZGVudGl0eSwgdXBzZXJ0IGdyb3VwcywgZGV0ZWN0IG5vLW9wXG4gICAgICAgIC5hbmRUaGVuKCh7IGNvbnRlbnQsIHNoYSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZUF1dGhvcml6YXRpb25GaWxlKGNvbnRlbnQpO1xuICAgICAgICAgIGlmIChwYXJzZVJlc3VsdC5pc0VycigpKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gbW9kaWZ5IHRmdmFyc1wiLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBwYXJzZVJlc3VsdC5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZXJyQXN5bmMocGFyc2VSZXN1bHQuZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJlc3VsdC52YWx1ZTtcblxuICAgICAgICAgIGNvbnN0IHsgaWRlbnRpdHlBZGRlZCwganNvbjogd2l0aElkZW50aXR5IH0gPSBlbnN1cmVJZGVudGl0eShcbiAgICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWlkZW50aXR5QWRkZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiSWRlbnRpdHkgYWxyZWFkeSBleGlzdHMsIGNoZWNraW5nIGdyb3Vwc1wiLCB7XG4gICAgICAgICAgICAgIGlkZW50aXR5SWQ6IGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZ3JvdXBzQ2hhbmdlZCwganNvbjogdXBkYXRlZEpzb24gfSA9IHVwc2VydEdyb3VwcyhcbiAgICAgICAgICAgIHdpdGhJZGVudGl0eSxcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIGVudlNob3J0LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWlkZW50aXR5QWRkZWQgJiYgIWdyb3Vwc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8g4oCUIG5vIGJyYW5jaCBjcmVhdGVkLCBubyBQUiBuZWVkZWQuXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIk5vIGNoYW5nZXMgbmVlZGVkLCBza2lwcGluZyBQUlwiLCB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9rQXN5bmMobmV3IEF1dGhvcml6YXRpb25SZXN1bHQoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBib2R5LCBtZXNzYWdlLCB0aXRsZSB9ID0gbWFrZUNoYW5nZURlc2NyaXB0aW9uKFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgICBpZGVudGl0eUFkZGVkLFxuICAgICAgICAgICAgZ3JvdXBzQ2hhbmdlZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gU3RlcCAzOiBDcmVhdGUgYnJhbmNoIG9ubHkgd2hlbiBjaGFuZ2VzIGFyZSBuZWVkZWRcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlQnJhbmNoKHtcbiAgICAgICAgICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgIGZyb21SZWY6IEJBU0VfQlJBTkNILFxuICAgICAgICAgICAgICAgIG93bmVyOiBhdXRob3JpemF0aW9uUmVwb093bmVyLFxuICAgICAgICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgIGBVbmFibGUgdG8gY3JlYXRlIGJyYW5jaCAke2JyYW5jaE5hbWV9IGluICR7YXV0aG9yaXphdGlvblJlcG9Pd25lcn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAvLyBTdGVwIDQ6IFVwZGF0ZSBmaWxlIG9uIHRoZSBicmFuY2ggdXNpbmcgdGhlIFNIQSByZWFkIGZyb20gbWFpblxuICAgICAgICAgICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICAgICAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS51cGRhdGVGaWxlKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhbmNoOiBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVkSnNvbiwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG93bmVyOiBhdXRob3JpemF0aW9uUmVwb093bmVyLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICAgICAgICBzaGEsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byB1cGRhdGUgJHtmaWxlUGF0aH0gb24gYnJhbmNoICR7YnJhbmNoTmFtZX0gaW4gJHthdXRob3JpemF0aW9uUmVwb093bmVyfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm9yVGVlKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLy8gU3RlcCA1OiBDcmVhdGUgUFJcbiAgICAgICAgICAgICAgLmFuZFRoZW4oKCkgPT5cbiAgICAgICAgICAgICAgICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlUHVsbFJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlOiBCQVNFX0JSQU5DSCxcbiAgICAgICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3duZXI6IGF1dGhvcml6YXRpb25SZXBvT3duZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byBjcmVhdGUgcHVsbCByZXF1ZXN0IGZyb20gJHticmFuY2hOYW1lfSB0byAke0JBU0VfQlJBTkNIfSBpbiAke2F1dGhvcml6YXRpb25SZXBvT3duZXJ9LyR7UkVQT19OQU1FfWAsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAubWFwKChwcikgPT4gbmV3IEF1dGhvcml6YXRpb25SZXN1bHQocHIudXJsKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICk7XG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -11,6 +11,10 @@ export default function (plop) {
|
|
|
11
11
|
// We filter them out here.
|
|
12
12
|
const env = Object.fromEntries(Object.entries(process.env)
|
|
13
13
|
.filter(([key]) => !key.startsWith("npm_config_"))
|
|
14
|
+
// Strip Node.js debugger env vars so child processes don't try to
|
|
15
|
+
// attach to the VS Code debugger and hang/fail.
|
|
16
|
+
.filter(([key]) => key !== "NODE_OPTIONS")
|
|
17
|
+
.filter(([key]) => !key.startsWith("VSCODE_INSPECTOR"))
|
|
14
18
|
// Disable corepack download prompt
|
|
15
19
|
.concat([["COREPACK_ENABLE_DOWNLOAD_PROMPT", "0"]]));
|
|
16
20
|
const $ = $_({
|
|
@@ -27,4 +31,4 @@ export default function (plop) {
|
|
|
27
31
|
return "Monorepo bootstrapped";
|
|
28
32
|
});
|
|
29
33
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtcG5wbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc2V0dXAtcG5wbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVoQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxPQUFPLFdBQVcsSUFBaUI7SUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzdDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMscUVBQXFFO1FBQ3JFLDJEQUEyRDtRQUMzRCwyQkFBMkI7UUFDM0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxrRUFBa0U7WUFDbEUsZ0RBQWdEO2FBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxjQUFjLENBQUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdkQsbUNBQW1DO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsR0FBRztZQUNILEdBQUc7WUFDSCxTQUFTLEVBQUUsS0FBSyxFQUFFLHNDQUFzQztTQUN6RCxDQUFDLENBQUM7UUFDSCx1RUFBdUU7UUFDdkUsaUZBQWlGO1FBQ2pGLE1BQU0sQ0FBQyxDQUFBLHFCQUFxQixvQkFBb0IsRUFBRSxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxDQUFBLGlFQUFpRSxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxDQUFBLGdFQUFnRSxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxDQUFBLG1GQUFtRixDQUFDO1FBQzNGLE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJCBhcyAkXyB9IGZyb20gXCJleGVjYVwiO1xuaW1wb3J0IHsgdHlwZSBOb2RlUGxvcEFQSSB9IGZyb20gXCJub2RlLXBsb3BcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHsgcGF5bG9hZFNjaGVtYSB9IGZyb20gXCIuLi9nZW5lcmF0b3JzL21vbm9yZXBvL3Byb21wdHMuanNcIjtcblxuY29uc3QgcG5wbUJvb3RzdHJhcFZlcnNpb24gPSBcIjEwXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwbG9wOiBOb2RlUGxvcEFQSSkge1xuICBwbG9wLnNldEFjdGlvblR5cGUoXCJzZXR1cFBucG1cIiwgYXN5bmMgKGRhdGEpID0+IHtcbiAgICBjb25zdCB7IHJlcG9OYW1lIH0gPSBwYXlsb2FkU2NoZW1hLnBhcnNlKGRhdGEpO1xuICAgIGNvbnN0IGN3ZCA9IHBhdGgucmVzb2x2ZShyZXBvTmFtZSk7XG4gICAgLy8gSWYgdGhpcyBnZW5lcmF0b3IgaXMgc3RhcnRlZCBieSBhIG5wbSBzY3JpcHQsIGl0IHdpbGwgaW5oZXJpdCBzb21lXG4gICAgLy8gY29uZmlnIHZhcmlhYmxlcyB0aGF0IHdpbGwgaW50ZXJmZXJlIHdpdGggcG5wbSBjb21tYW5kcy5cbiAgICAvLyBXZSBmaWx0ZXIgdGhlbSBvdXQgaGVyZS5cbiAgICBjb25zdCBlbnYgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudilcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICFrZXkuc3RhcnRzV2l0aChcIm5wbV9jb25maWdfXCIpKVxuICAgICAgICAvLyBTdHJpcCBOb2RlLmpzIGRlYnVnZ2VyIGVudiB2YXJzIHNvIGNoaWxkIHByb2Nlc3NlcyBkb24ndCB0cnkgdG9cbiAgICAgICAgLy8gYXR0YWNoIHRvIHRoZSBWUyBDb2RlIGRlYnVnZ2VyIGFuZCBoYW5nL2ZhaWwuXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09IFwiTk9ERV9PUFRJT05TXCIpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAha2V5LnN0YXJ0c1dpdGgoXCJWU0NPREVfSU5TUEVDVE9SXCIpKVxuICAgICAgICAvLyBEaXNhYmxlIGNvcmVwYWNrIGRvd25sb2FkIHByb21wdFxuICAgICAgICAuY29uY2F0KFtbXCJDT1JFUEFDS19FTkFCTEVfRE9XTkxPQURfUFJPTVBUXCIsIFwiMFwiXV0pLFxuICAgICk7XG4gICAgY29uc3QgJCA9ICRfKHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudixcbiAgICAgIGV4dGVuZEVudjogZmFsc2UsIC8vIERvbid0IGluY2x1ZGUgcHJvY2Vzcy5lbnYgdmFyaWFibGVzXG4gICAgfSk7XG4gICAgLy8gS2VlcCB0aGUgYm9vdHN0cmFwIG9uIHBucG0gMTAgc28gYG54IGluaXRgIHdvcmtzIHdpdGhvdXQgdGhlIHBucG0gMTFcbiAgICAvLyBidWlsZC1hcHByb3ZhbCBzZXR0aW5ncyB0aGF0IHdvdWxkIG90aGVyd2lzZSBsZWFrIGludG8gdGhlIGdlbmVyYXRlZCB0ZW1wbGF0ZS5cbiAgICBhd2FpdCAkYGNvcmVwYWNrIHVzZSBwbnBtQCR7cG5wbUJvb3RzdHJhcFZlcnNpb259YDtcbiAgICBhd2FpdCAkYG5weCAtLXllcyBueEBsYXRlc3QgaW5pdCAtLWludGVyYWN0aXZlPWZhbHNlIC0tYWlBZ2VudHM9Y29waWxvdGA7XG4gICAgYXdhaXQgJGBwbnBtIC13IGFkZCAtRCBAZGV2Y29udGFpbmVycy9jbGkgQG54L2pzIEBueC9lc2xpbnQgQG54L3ZpdGVzdGA7XG4gICAgYXdhaXQgJGBwbnBtIGRldmNvbnRhaW5lciB0ZW1wbGF0ZXMgYXBwbHkgLXQgZ2hjci5pby9wYWdvcGEvZGV2Y29udGFpbmVyLXRlbXBsYXRlcy9ub2RlOjFgO1xuICAgIHJldHVybiBcIk1vbm9yZXBvIGJvb3RzdHJhcHBlZFwiO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Updates infra/repository/main.tf and applies it so GitHub.com repository
|
|
3
|
+
* environments exist before deployment scaffolding continues.
|
|
4
|
+
*
|
|
5
|
+
* The repository Terraform module remains the source of truth for GitHub
|
|
6
|
+
* environments, including protection rules and reviewers. This action only
|
|
7
|
+
* changes the module's `repository.environments` input, then runs Terraform from
|
|
8
|
+
* infra/repository to create or update the environments on GitHub.
|
|
9
|
+
*/
|
|
10
|
+
import { type NodePlopAPI } from "node-plop";
|
|
11
|
+
import type { Environment } from "../../../domain/environment.js";
|
|
12
|
+
import { type Payload } from "../generators/environment/prompts.js";
|
|
13
|
+
export declare const syncRepositoryTerraformEnvironments: (content: string, environmentName: Environment["name"]) => string;
|
|
14
|
+
export declare const syncRepositoryEnvironments: (payload: Payload) => Promise<void>;
|
|
15
|
+
export default function (plop: NodePlopAPI): void;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { tf$ } from "../../execa/terraform.js";
|
|
4
|
+
import { payloadSchema, } from "../generators/environment/prompts.js";
|
|
5
|
+
const KNOWN_ENVIRONMENTS = ["dev", "uat", "prod"];
|
|
6
|
+
const KNOWN_ENVIRONMENT_NAMES = KNOWN_ENVIRONMENTS;
|
|
7
|
+
const environmentList = (environments) => `[${[
|
|
8
|
+
...KNOWN_ENVIRONMENTS.filter((environment) => environments.has(environment)),
|
|
9
|
+
...Array.from(environments).filter((environment) => !KNOWN_ENVIRONMENT_NAMES.includes(environment)),
|
|
10
|
+
]
|
|
11
|
+
.map((environment) => `"${environment}"`)
|
|
12
|
+
.join(", ")}]`;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the inner body of the `repository = { ... }` object.
|
|
15
|
+
*
|
|
16
|
+
* Example input:
|
|
17
|
+
* repository = {
|
|
18
|
+
* name = "repo"
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* Example output:
|
|
22
|
+
* name = "repo"
|
|
23
|
+
*/
|
|
24
|
+
const findRepositoryBlock = (content) => {
|
|
25
|
+
const match = /(?:^|\n)(?<indent>[^\S\r\n]*)repository[^\S\r\n]*=[^\S\r\n]*\{\n/.exec(content);
|
|
26
|
+
if (!match) {
|
|
27
|
+
throw new Error("Cannot find the repository configuration in infra/repository/main.tf");
|
|
28
|
+
}
|
|
29
|
+
const blockStart = match.index + match[0].length;
|
|
30
|
+
const closingMatch = new RegExp(`\\n${match.groups?.indent ?? ""}\\}`).exec(content.slice(blockStart));
|
|
31
|
+
if (!closingMatch) {
|
|
32
|
+
throw new Error("Cannot find the end of the repository configuration in infra/repository/main.tf");
|
|
33
|
+
}
|
|
34
|
+
const end = blockStart + closingMatch.index;
|
|
35
|
+
return { block: content.slice(blockStart, end), end, start: blockStart };
|
|
36
|
+
};
|
|
37
|
+
const repositoryPropertyIndent = (block) => {
|
|
38
|
+
const propertyMatch = /^(?<indent>\s*)\w+\s*=/m.exec(block);
|
|
39
|
+
return propertyMatch?.groups?.indent ?? " ";
|
|
40
|
+
};
|
|
41
|
+
const readRepositoryConfig = async (repositoryMainPath) => {
|
|
42
|
+
try {
|
|
43
|
+
return await fs.readFile(repositoryMainPath, "utf8");
|
|
44
|
+
}
|
|
45
|
+
catch (cause) {
|
|
46
|
+
throw new Error(`Cannot synchronize GitHub repository environments because ${path.relative(process.cwd(), repositoryMainPath)} does not exist or is not readable.`, { cause });
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
export const syncRepositoryTerraformEnvironments = (content, environmentName) => {
|
|
50
|
+
const repositoryBlock = findRepositoryBlock(content);
|
|
51
|
+
const environmentsMatch = /^(?<indent>\s*)environments\s*=\s*\[(?<values>[\s\S]*?)\]\s*$/m.exec(repositoryBlock.block);
|
|
52
|
+
if (!environmentsMatch) {
|
|
53
|
+
if (environmentName === "prod") {
|
|
54
|
+
return content;
|
|
55
|
+
}
|
|
56
|
+
// Without an explicit list, the Terraform module manages prod by default.
|
|
57
|
+
// Adding a non-prod environment must also keep prod explicit.
|
|
58
|
+
const environments = new Set([environmentName, "prod"]);
|
|
59
|
+
const propertyIndent = repositoryPropertyIndent(repositoryBlock.block);
|
|
60
|
+
const separator = repositoryBlock.block.endsWith("\n") ? "" : "\n";
|
|
61
|
+
const updatedBlock = `${repositoryBlock.block}${separator}${propertyIndent}environments = ${environmentList(environments)}`;
|
|
62
|
+
return `${content.slice(0, repositoryBlock.start)}${updatedBlock}${content.slice(repositoryBlock.end)}`;
|
|
63
|
+
}
|
|
64
|
+
const existingEnvironments = new Set(Array.from((environmentsMatch.groups?.values ?? "").matchAll(/"([^"]+)"/g))
|
|
65
|
+
.map((match) => match[1])
|
|
66
|
+
.filter((environment) => environment.length > 0));
|
|
67
|
+
const hasSelectedEnvironment = existingEnvironments.has(environmentName);
|
|
68
|
+
const hasProdEnvironment = existingEnvironments.has("prod");
|
|
69
|
+
if (hasSelectedEnvironment && hasProdEnvironment) {
|
|
70
|
+
return content;
|
|
71
|
+
}
|
|
72
|
+
existingEnvironments.add(environmentName);
|
|
73
|
+
existingEnvironments.add("prod");
|
|
74
|
+
const indent = environmentsMatch.groups?.indent ?? " ";
|
|
75
|
+
const updatedLine = `${indent}environments = ${environmentList(existingEnvironments)}`;
|
|
76
|
+
const updatedBlock = repositoryBlock.block.replace(environmentsMatch[0], updatedLine);
|
|
77
|
+
return `${content.slice(0, repositoryBlock.start)}${updatedBlock}${content.slice(repositoryBlock.end)}`;
|
|
78
|
+
};
|
|
79
|
+
export const syncRepositoryEnvironments = async (payload) => {
|
|
80
|
+
const repositoryPath = path.join(process.cwd(), "infra", "repository");
|
|
81
|
+
const repositoryMainPath = path.join(repositoryPath, "main.tf");
|
|
82
|
+
const currentRepositoryConfig = await readRepositoryConfig(repositoryMainPath);
|
|
83
|
+
const updatedRepositoryConfig = syncRepositoryTerraformEnvironments(currentRepositoryConfig, payload.env.name);
|
|
84
|
+
if (updatedRepositoryConfig !== currentRepositoryConfig) {
|
|
85
|
+
await fs.writeFile(repositoryMainPath, updatedRepositoryConfig, "utf8");
|
|
86
|
+
}
|
|
87
|
+
const repositoryTerraform = tf$({ cwd: repositoryPath });
|
|
88
|
+
await repositoryTerraform `terraform init`;
|
|
89
|
+
await repositoryTerraform `terraform apply -auto-approve`;
|
|
90
|
+
};
|
|
91
|
+
export default function (plop) {
|
|
92
|
+
plop.setActionType("syncRepositoryEnvironments", async (data) => {
|
|
93
|
+
const payload = payloadSchema.parse(data);
|
|
94
|
+
await syncRepositoryEnvironments(payload);
|
|
95
|
+
return "GitHub repository environments updated from Terraform";
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFJN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLGtCQUFrQixHQUEwQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBc0Isa0JBQWtCLENBQUM7QUFFdEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUF5QixFQUFVLEVBQUUsQ0FDNUQsSUFBSTtJQUNGLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FDOUI7SUFDRCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ2hFO0NBQ0Y7S0FDRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxHQUFHLENBQUM7S0FDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFFbkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsT0FBZSxFQUNnQyxFQUFFO0lBQ2pELE1BQU0sS0FBSyxHQUNULGtFQUFrRSxDQUFDLElBQUks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UUFDMUMsT0FBTyx1REFBdUQsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVwZGF0ZXMgaW5mcmEvcmVwb3NpdG9yeS9tYWluLnRmIGFuZCBhcHBsaWVzIGl0IHNvIEdpdEh1Yi5jb20gcmVwb3NpdG9yeVxuICogZW52aXJvbm1lbnRzIGV4aXN0IGJlZm9yZSBkZXBsb3ltZW50IHNjYWZmb2xkaW5nIGNvbnRpbnVlcy5cbiAqXG4gKiBUaGUgcmVwb3NpdG9yeSBUZXJyYWZvcm0gbW9kdWxlIHJlbWFpbnMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgR2l0SHViXG4gKiBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyBwcm90ZWN0aW9uIHJ1bGVzIGFuZCByZXZpZXdlcnMuIFRoaXMgYWN0aW9uIG9ubHlcbiAqIGNoYW5nZXMgdGhlIG1vZHVsZSdzIGByZXBvc2l0b3J5LmVudmlyb25tZW50c2AgaW5wdXQsIHRoZW4gcnVucyBUZXJyYWZvcm0gZnJvbVxuICogaW5mcmEvcmVwb3NpdG9yeSB0byBjcmVhdGUgb3IgdXBkYXRlIHRoZSBlbnZpcm9ubWVudHMgb24gR2l0SHViLlxuICovXG5pbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2Vudmlyb25tZW50LmpzXCI7XG5cbmltcG9ydCB7IHRmJCB9IGZyb20gXCIuLi8uLi9leGVjYS90ZXJyYWZvcm0uanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSxcbn0gZnJvbSBcIi4uL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBLTk9XTl9FTlZJUk9OTUVOVFM6IEVudmlyb25tZW50W1wibmFtZVwiXVtdID0gW1wiZGV2XCIsIFwidWF0XCIsIFwicHJvZFwiXTtcbmNvbnN0IEtOT1dOX0VOVklST05NRU5UX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IEtOT1dOX0VOVklST05NRU5UUztcblxuY29uc3QgZW52aXJvbm1lbnRMaXN0ID0gKGVudmlyb25tZW50czogU2V0PHN0cmluZz4pOiBzdHJpbmcgPT5cbiAgYFske1tcbiAgICAuLi5LTk9XTl9FTlZJUk9OTUVOVFMuZmlsdGVyKChlbnZpcm9ubWVudCkgPT5cbiAgICAgIGVudmlyb25tZW50cy5oYXMoZW52aXJvbm1lbnQpLFxuICAgICksXG4gICAgLi4uQXJyYXkuZnJvbShlbnZpcm9ubWVudHMpLmZpbHRlcihcbiAgICAgIChlbnZpcm9ubWVudCkgPT4gIUtOT1dOX0VOVklST05NRU5UX05BTUVTLmluY2x1ZGVzKGVudmlyb25tZW50KSxcbiAgICApLFxuICBdXG4gICAgLm1hcCgoZW52aXJvbm1lbnQpID0+IGBcIiR7ZW52aXJvbm1lbnR9XCJgKVxuICAgIC5qb2luKFwiLCBcIil9XWA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5uZXIgYm9keSBvZiB0aGUgYHJlcG9zaXRvcnkgPSB7IC4uLiB9YCBvYmplY3QuXG4gKlxuICogRXhhbXBsZSBpbnB1dDpcbiAqIHJlcG9zaXRvcnkgPSB7XG4gKiAgIG5hbWUgPSBcInJlcG9cIlxuICogfVxuICpcbiAqIEV4YW1wbGUgb3V0cHV0OlxuICogICBuYW1lID0gXCJyZXBvXCJcbiAqL1xuY29uc3QgZmluZFJlcG9zaXRvcnlCbG9jayA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogeyBibG9jazogc3RyaW5nOyBlbmQ6IG51bWJlcjsgc3RhcnQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgbWF0Y2ggPVxuICAgIC8oPzpefFxcbikoPzxpbmRlbnQ+W15cXFNcXHJcXG5dKilyZXBvc2l0b3J5W15cXFNcXHJcXG5dKj1bXlxcU1xcclxcbl0qXFx7XFxuLy5leGVjKFxuICAgICAgY29udGVudCxcbiAgICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJDYW5ub3QgZmluZCB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBibG9ja1N0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIGNvbnN0IGNsb3NpbmdNYXRjaCA9IG5ldyBSZWdFeHAoYFxcXFxuJHttYXRjaC5ncm91cHM/LmluZGVudCA/PyBcIlwifVxcXFx9YCkuZXhlYyhcbiAgICBjb250ZW50LnNsaWNlKGJsb2NrU3RhcnQpLFxuICApO1xuICBpZiAoIWNsb3NpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ2Fubm90IGZpbmQgdGhlIGVuZCBvZiB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBlbmQgPSBibG9ja1N0YXJ0ICsgY2xvc2luZ01hdGNoLmluZGV4O1xuICByZXR1cm4geyBibG9jazogY29udGVudC5zbGljZShibG9ja1N0YXJ0LCBlbmQpLCBlbmQsIHN0YXJ0OiBibG9ja1N0YXJ0IH07XG59O1xuXG5jb25zdCByZXBvc2l0b3J5UHJvcGVydHlJbmRlbnQgPSAoYmxvY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByb3BlcnR5TWF0Y2ggPSAvXig/PGluZGVudD5cXHMqKVxcdytcXHMqPS9tLmV4ZWMoYmxvY2spO1xuICByZXR1cm4gcHJvcGVydHlNYXRjaD8uZ3JvdXBzPy5pbmRlbnQgPz8gXCIgICAgXCI7XG59O1xuXG5jb25zdCByZWFkUmVwb3NpdG9yeUNvbmZpZyA9IGFzeW5jIChyZXBvc2l0b3J5TWFpblBhdGg6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHN5bmNocm9uaXplIEdpdEh1YiByZXBvc2l0b3J5IGVudmlyb25tZW50cyBiZWNhdXNlICR7cGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCByZXBvc2l0b3J5TWFpblBhdGgpfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUuYCxcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlUZXJyYWZvcm1FbnZpcm9ubWVudHMgPSAoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXBvc2l0b3J5QmxvY2sgPSBmaW5kUmVwb3NpdG9yeUJsb2NrKGNvbnRlbnQpO1xuICBjb25zdCBlbnZpcm9ubWVudHNNYXRjaCA9XG4gICAgL14oPzxpbmRlbnQ+XFxzKillbnZpcm9ubWVudHNcXHMqPVxccypcXFsoPzx2YWx1ZXM+W1xcc1xcU10qPylcXF1cXHMqJC9tLmV4ZWMoXG4gICAgICByZXBvc2l0b3J5QmxvY2suYmxvY2ssXG4gICAgKTtcblxuICBpZiAoIWVudmlyb25tZW50c01hdGNoKSB7XG4gICAgaWYgKGVudmlyb25tZW50TmFtZSA9PT0gXCJwcm9kXCIpIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIFdpdGhvdXQgYW4gZXhwbGljaXQgbGlzdCwgdGhlIFRlcnJhZm9ybSBtb2R1bGUgbWFuYWdlcyBwcm9kIGJ5IGRlZmF1bHQuXG4gICAgLy8gQWRkaW5nIGEgbm9uLXByb2QgZW52aXJvbm1lbnQgbXVzdCBhbHNvIGtlZXAgcHJvZCBleHBsaWNpdC5cbiAgICBjb25zdCBlbnZpcm9ubWVudHMgPSBuZXcgU2V0PHN0cmluZz4oW2Vudmlyb25tZW50TmFtZSwgXCJwcm9kXCJdKTtcbiAgICBjb25zdCBwcm9wZXJ0eUluZGVudCA9IHJlcG9zaXRvcnlQcm9wZXJ0eUluZGVudChyZXBvc2l0b3J5QmxvY2suYmxvY2spO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5lbmRzV2l0aChcIlxcblwiKSA/IFwiXCIgOiBcIlxcblwiO1xuICAgIGNvbnN0IHVwZGF0ZWRCbG9jayA9IGAke3JlcG9zaXRvcnlCbG9jay5ibG9ja30ke3NlcGFyYXRvcn0ke3Byb3BlcnR5SW5kZW50fWVudmlyb25tZW50cyAgICAgICAgICAgPSAke2Vudmlyb25tZW50TGlzdChlbnZpcm9ubWVudHMpfWA7XG4gICAgcmV0dXJuIGAke2NvbnRlbnQuc2xpY2UoMCwgcmVwb3NpdG9yeUJsb2NrLnN0YXJ0KX0ke3VwZGF0ZWRCbG9ja30ke2NvbnRlbnQuc2xpY2UocmVwb3NpdG9yeUJsb2NrLmVuZCl9YDtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRW52aXJvbm1lbnRzID0gbmV3IFNldChcbiAgICBBcnJheS5mcm9tKChlbnZpcm9ubWVudHNNYXRjaC5ncm91cHM/LnZhbHVlcyA/PyBcIlwiKS5tYXRjaEFsbCgvXCIoW15cIl0rKVwiL2cpKVxuICAgICAgLm1hcCgobWF0Y2gpID0+IG1hdGNoWzFdKVxuICAgICAgLmZpbHRlcigoZW52aXJvbm1lbnQpID0+IGVudmlyb25tZW50Lmxlbmd0aCA+IDApLFxuICApO1xuICBjb25zdCBoYXNTZWxlY3RlZEVudmlyb25tZW50ID0gZXhpc3RpbmdFbnZpcm9ubWVudHMuaGFzKGVudmlyb25tZW50TmFtZSk7XG4gIGNvbnN0IGhhc1Byb2RFbnZpcm9ubWVudCA9IGV4aXN0aW5nRW52aXJvbm1lbnRzLmhhcyhcInByb2RcIik7XG4gIGlmIChoYXNTZWxlY3RlZEVudmlyb25tZW50ICYmIGhhc1Byb2RFbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgZXhpc3RpbmdFbnZpcm9ubWVudHMuYWRkKGVudmlyb25tZW50TmFtZSk7XG4gIGV4aXN0aW5nRW52aXJvbm1lbnRzLmFkZChcInByb2RcIik7XG4gIGNvbnN0IGluZGVudCA9IGVudmlyb25tZW50c01hdGNoLmdyb3Vwcz8uaW5kZW50ID8/IFwiICAgIFwiO1xuICBjb25zdCB1cGRhdGVkTGluZSA9IGAke2luZGVudH1lbnZpcm9ubWVudHMgICAgICAgICAgID0gJHtlbnZpcm9ubWVudExpc3QoZXhpc3RpbmdFbnZpcm9ubWVudHMpfWA7XG4gIGNvbnN0IHVwZGF0ZWRCbG9jayA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5yZXBsYWNlKFxuICAgIGVudmlyb25tZW50c01hdGNoWzBdLFxuICAgIHVwZGF0ZWRMaW5lLFxuICApO1xuXG4gIHJldHVybiBgJHtjb250ZW50LnNsaWNlKDAsIHJlcG9zaXRvcnlCbG9jay5zdGFydCl9JHt1cGRhdGVkQmxvY2t9JHtjb250ZW50LnNsaWNlKHJlcG9zaXRvcnlCbG9jay5lbmQpfWA7XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMgPSBhc3luYyAoXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVwb3NpdG9yeVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIik7XG4gIGNvbnN0IHJlcG9zaXRvcnlNYWluUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5UGF0aCwgXCJtYWluLnRmXCIpO1xuXG4gIGNvbnN0IGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnID1cbiAgICBhd2FpdCByZWFkUmVwb3NpdG9yeUNvbmZpZyhyZXBvc2l0b3J5TWFpblBhdGgpO1xuICBjb25zdCB1cGRhdGVkUmVwb3NpdG9yeUNvbmZpZyA9IHN5bmNSZXBvc2l0b3J5VGVycmFmb3JtRW52aXJvbm1lbnRzKFxuICAgIGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnLFxuICAgIHBheWxvYWQuZW52Lm5hbWUsXG4gICk7XG5cbiAgaWYgKHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnICE9PSBjdXJyZW50UmVwb3NpdG9yeUNvbmZpZykge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnLCBcInV0ZjhcIik7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5VGVycmFmb3JtID0gdGYkKHsgY3dkOiByZXBvc2l0b3J5UGF0aCB9KTtcbiAgYXdhaXQgcmVwb3NpdG9yeVRlcnJhZm9ybWB0ZXJyYWZvcm0gaW5pdGA7XG4gIGF3YWl0IHJlcG9zaXRvcnlUZXJyYWZvcm1gdGVycmFmb3JtIGFwcGx5IC1hdXRvLWFwcHJvdmVgO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHBsb3A6IE5vZGVQbG9wQVBJKTogdm9pZCB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcInN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzXCIsIGFzeW5jIChkYXRhKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRTY2hlbWEucGFyc2UoZGF0YSk7XG4gICAgYXdhaXQgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMocGF5bG9hZCk7XG4gICAgcmV0dXJuIFwiR2l0SHViIHJlcG9zaXRvcnkgZW52aXJvbm1lbnRzIHVwZGF0ZWQgZnJvbSBUZXJyYWZvcm1cIjtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -56,6 +56,9 @@ export default function getActions(templatesPath) {
|
|
|
56
56
|
{
|
|
57
57
|
type: "getTerraformBackend",
|
|
58
58
|
},
|
|
59
|
+
{
|
|
60
|
+
type: "syncRepositoryEnvironments",
|
|
61
|
+
},
|
|
59
62
|
addWorkflowModule(templatesPath),
|
|
60
63
|
...addEnvironmentModule("bootstrapper"),
|
|
61
64
|
];
|
|
@@ -72,4 +75,4 @@ export default function getActions(templatesPath) {
|
|
|
72
75
|
return actions;
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsT0FBMkMsRUFDM0MsYUFBcUIsRUFDckIsSUFBSSxHQUFHLEtBQUssRUFDWixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3ZDLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN6QixDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzNDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0MsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2QjtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNyRSxXQUFXLEVBQUUsSUFB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QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZSwgRHluYW1pY0FjdGlvbnNGdW5jdGlvbiB9IGZyb20gXCJub2RlLXBsb3BcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHsgZm9ybWF0VGVycmFmb3JtQ29kZSB9IGZyb20gXCIuLi8uLi8uLi90ZXJyYWZvcm0vZm10LmpzXCI7XG5pbXBvcnQgeyB0ZXJyYWZvcm1TdGF0ZUtleSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3RlcnJhZm9ybS1zdGF0ZS1rZXkuanNcIjtcbmltcG9ydCB7IFBheWxvYWQgfSBmcm9tIFwiLi9wcm9tcHRzLmpzXCI7XG5pbXBvcnQgeyBwYXlsb2FkU2NoZW1hIH0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBhZGRNb2R1bGUgPSAoXG4gIGNvbnRleHQ6IFBpY2s8UGF5bG9hZCwgXCJlbnZcIiB8IFwid29ya3NwYWNlXCI+LFxuICB0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcsXG4gIGluaXQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCB7IGVudiB9ID0gY29udGV4dDtcbiAgY29uc3QgY2xvdWRBY2NvdW50c0J5Q3NwID0gT2JqZWN0Lmdyb3VwQnkoXG4gICAgZW52LmNsb3VkQWNjb3VudHMsXG4gICAgKGFjY291bnQpID0+IGFjY291bnQuY3NwLFxuICApO1xuICBjb25zdCBpbmNsdWRlc1Byb2RJTyA9IGVudi5jbG91ZEFjY291bnRzLnNvbWUoXG4gICAgKGFjY291bnQpID0+IGFjY291bnQuZGlzcGxheU5hbWUgPT09IFwiUFJPRC1JT1wiLFxuICApO1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICByZXR1cm4gKG5hbWU6IHN0cmluZykgPT4gW1xuICAgIHtcbiAgICAgIGJhc2U6IHRlbXBsYXRlc1BhdGgsXG4gICAgICBkYXRhOiB7IGNsb3VkQWNjb3VudHNCeUNzcCwgaW5jbHVkZXNQcm9kSU8sIGluaXQ6IGluaXQgfHwgdW5kZWZpbmVkIH0sXG4gICAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCJpbmZyYVwiKSxcbiAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgdGVtcGxhdGVGaWxlczogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIG5hbWUpLFxuICAgICAgdHJhbnNmb3JtOiBmb3JtYXRUZXJyYWZvcm1Db2RlLFxuICAgICAgdHlwZTogXCJhZGRNYW55XCIsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgYmFzZTogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwic2hhcmVkXCIpLFxuICAgICAgZGF0YToge1xuICAgICAgICBjbG91ZEFjY291bnRzQnlDc3AsXG4gICAgICAgIGluaXQ6IGluaXQgfHwgdW5kZWZpbmVkLFxuICAgICAgICB0ZXJyYWZvcm1CYWNrZW5kS2V5OiB0ZXJyYWZvcm1TdGF0ZUtleShjb250ZXh0LCBuYW1lKSxcbiAgICAgIH0sXG4gICAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCJpbmZyYVwiLCBuYW1lLCBcInt7ZW52Lm5hbWV9fVwiKSxcbiAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgdGVtcGxhdGVGaWxlczogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwic2hhcmVkXCIpLFxuICAgICAgdHJhbnNmb3JtOiBmb3JtYXRUZXJyYWZvcm1Db2RlLFxuICAgICAgdHlwZTogXCJhZGRNYW55XCIsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH0sXG4gIF07XG59O1xuXG5jb25zdCBhZGRXb3JrZmxvd01vZHVsZSA9ICh0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcpOiBBY3Rpb25UeXBlID0+IHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgcmV0dXJuIHtcbiAgICBiYXNlOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgXCJ3b3JrZmxvd1wiKSxcbiAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCIuZ2l0aHViXCIsIFwid29ya2Zsb3dzXCIpLFxuICAgIGZvcmNlOiB0cnVlLFxuICAgIHRlbXBsYXRlRmlsZXM6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBcIndvcmtmbG93XCIpLFxuICAgIHR5cGU6IFwiYWRkTWFueVwiLFxuICAgIHZlcmJvc2U6IHRydWUsXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBY3Rpb25zKFxuICB0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcsXG4pOiBEeW5hbWljQWN0aW9uc0Z1bmN0aW9uIHtcbiAgcmV0dXJuIChpbnB1dDogdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFwiZW52aXJvbm1lbnQgZ2VuZXJhdG9yIGlucHV0IHtpbnB1dH1cIiwgeyBpbnB1dCB9KTtcblxuICAgIGNvbnN0IHsgZW52LCBpbml0LCB3b3Jrc3BhY2UgfSA9IHBheWxvYWRTY2hlbWEucGFyc2UoaW5wdXQpO1xuXG4gICAgY29uc3QgYWRkRW52aXJvbm1lbnRNb2R1bGUgPSBhZGRNb2R1bGUoXG4gICAgICB7IGVudiwgd29ya3NwYWNlIH0sXG4gICAgICB0ZW1wbGF0ZXNQYXRoLFxuICAgICAgISFpbml0LFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBBY3Rpb25UeXBlW10gPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZ2V0VGVycmFmb3JtQmFja2VuZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzeW5jUmVwb3NpdG9yeUVudmlyb25tZW50c1wiLFxuICAgICAgfSxcbiAgICAgIGFkZFdvcmtmbG93TW9kdWxlKHRlbXBsYXRlc1BhdGgpLFxuICAgICAgLi4uYWRkRW52aXJvbm1lbnRNb2R1bGUoXCJib290c3RyYXBwZXJcIiksXG4gICAgXTtcblxuICAgIGlmIChpbml0KSB7XG4gICAgICBhY3Rpb25zLnVuc2hpZnQoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImluaXRDbG91ZEFjY291bnRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBpbml0LnRlcnJhZm9ybUJhY2tlbmRcbiAgICAgICAgICAgID8gXCJwcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kXCJcbiAgICAgICAgICAgIDogXCJnZXRUZXJyYWZvcm1CYWNrZW5kXCIsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgYWN0aW9ucy5wdXNoKC4uLmFkZEVudmlyb25tZW50TW9kdWxlKFwiY29yZVwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvbnM7XG4gIH07XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { type NodePlopAPI } from "node-plop";
|
|
|
2
2
|
import { CloudAccountRepository, CloudAccountService } from "../../../../domain/cloud-account.js";
|
|
3
3
|
import { GitHubRepo } from "../../../../domain/github-repo.js";
|
|
4
4
|
import { type GitHubService } from "../../../../domain/github.js";
|
|
5
|
-
import { Payload, payloadSchema } from "./prompts.js";
|
|
5
|
+
import { InitialAnswers, Payload, payloadSchema } from "./prompts.js";
|
|
6
6
|
export declare const PLOP_ENVIRONMENT_GENERATOR_NAME = "DX_DeploymentEnvironment";
|
|
7
|
-
export { Payload, payloadSchema };
|
|
8
|
-
export default function (plop: NodePlopAPI, templatesPath: string, cloudAccountRepository: CloudAccountRepository, cloudAccountService: CloudAccountService, gitHubService: GitHubService, github?: GitHubRepo): void;
|
|
7
|
+
export { type InitialAnswers, Payload, payloadSchema };
|
|
8
|
+
export default function (plop: NodePlopAPI, templatesPath: string, cloudAccountRepository: CloudAccountRepository, cloudAccountService: CloudAccountService, gitHubService: GitHubService, github?: GitHubRepo, initialAnswers?: InitialAnswers): void;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import setGetTerraformBackend from "../../actions/get-terraform-backend.js";
|
|
2
2
|
import setInitCloudAccountsAction from "../../actions/init-cloud-accounts.js";
|
|
3
3
|
import setProvisionTerraformBackendAction from "../../actions/provision-terraform-backend.js";
|
|
4
|
+
import setSyncRepositoryEnvironmentsAction from "../../actions/sync-repository-environments.js";
|
|
4
5
|
import setEnvShortHelper from "../../helpers/env-short.js";
|
|
5
6
|
import setEqHelper from "../../helpers/eq.js";
|
|
6
7
|
import setResourcePrefixHelper from "../../helpers/resource-prefix.js";
|
|
7
8
|
import setTerraformStateKeyHelper from "../../helpers/terraform-state-key.js";
|
|
8
9
|
import getActions from "./actions.js";
|
|
9
|
-
import getPrompts, { payloadSchema } from "./prompts.js";
|
|
10
|
+
import getPrompts, { payloadSchema, } from "./prompts.js";
|
|
10
11
|
export const PLOP_ENVIRONMENT_GENERATOR_NAME = "DX_DeploymentEnvironment";
|
|
11
12
|
export { payloadSchema };
|
|
12
|
-
export default function (plop, templatesPath, cloudAccountRepository, cloudAccountService, gitHubService, github) {
|
|
13
|
+
export default function (plop, templatesPath, cloudAccountRepository, cloudAccountService, gitHubService, github, initialAnswers = {}) {
|
|
13
14
|
setEnvShortHelper(plop);
|
|
14
15
|
setResourcePrefixHelper(plop);
|
|
15
16
|
setEqHelper(plop);
|
|
@@ -17,6 +18,7 @@ export default function (plop, templatesPath, cloudAccountRepository, cloudAccou
|
|
|
17
18
|
setGetTerraformBackend(plop, cloudAccountService);
|
|
18
19
|
setProvisionTerraformBackendAction(plop, cloudAccountService);
|
|
19
20
|
setInitCloudAccountsAction(plop, cloudAccountService, gitHubService);
|
|
21
|
+
setSyncRepositoryEnvironmentsAction(plop);
|
|
20
22
|
plop.setGenerator(PLOP_ENVIRONMENT_GENERATOR_NAME, {
|
|
21
23
|
actions: getActions(templatesPath),
|
|
22
24
|
description: "Generate a new deployment environment",
|
|
@@ -24,7 +26,8 @@ export default function (plop, templatesPath, cloudAccountRepository, cloudAccou
|
|
|
24
26
|
cloudAccountRepository,
|
|
25
27
|
cloudAccountService,
|
|
26
28
|
github,
|
|
29
|
+
initialAnswers,
|
|
27
30
|
}),
|
|
28
31
|
});
|
|
29
32
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9nZW5lcmF0b3JzL2Vudmlyb25tZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sc0JBQXNCLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTywwQkFBMEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLGtDQUFrQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sbUNBQW1DLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxpQkFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLHVCQUF1QixNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sMEJBQTBCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sVUFBVSxFQUFFLEVBR2pCLGFBQWEsR0FDZCxNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRywwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQWdDLGFBQWEsRUFBRSxDQUFDO0FBRXZELE1BQU0sQ0FBQyxPQUFPLFdBQ1osSUFBaUIsRUFDakIsYUFBcUIsRUFDckIsc0JBQThDLEVBQzlDLG1CQUF3QyxFQUN4QyxhQUE0QixFQUM1QixNQUFtQixFQUNuQixpQkFBaUMsRUFBRTtJQUVuQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4Qix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDbEQsa0NBQWtDLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsMEJBQTBCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JFLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxZQUFZLENBQUMsK0JBQStCLEVBQUU7UUFDakQsT0FBTyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDbEMsV0FBVyxFQUFFLHVDQUF1QztRQUNwRCxPQUFPLEVBQUUsVUFBVSxDQUFDO1lBQ2xCLHNCQUFzQjtZQUN0QixtQkFBbUI7WUFDbkIsTUFBTTtZQUNOLGNBQWM7U0FDZixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5cbmltcG9ydCB7XG4gIENsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gIENsb3VkQWNjb3VudFNlcnZpY2UsXG59IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vY2xvdWQtYWNjb3VudC5qc1wiO1xuaW1wb3J0IHsgR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vZ2l0aHViLXJlcG8uanNcIjtcbmltcG9ydCB7IHR5cGUgR2l0SHViU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgc2V0R2V0VGVycmFmb3JtQmFja2VuZCBmcm9tIFwiLi4vLi4vYWN0aW9ucy9nZXQtdGVycmFmb3JtLWJhY2tlbmQuanNcIjtcbmltcG9ydCBzZXRJbml0Q2xvdWRBY2NvdW50c0FjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9pbml0LWNsb3VkLWFjY291bnRzLmpzXCI7XG5pbXBvcnQgc2V0UHJvdmlzaW9uVGVycmFmb3JtQmFja2VuZEFjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9wcm92aXNpb24tdGVycmFmb3JtLWJhY2tlbmQuanNcIjtcbmltcG9ydCBzZXRTeW5jUmVwb3NpdG9yeUVudmlyb25tZW50c0FjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9zeW5jLXJlcG9zaXRvcnktZW52aXJvbm1lbnRzLmpzXCI7XG5pbXBvcnQgc2V0RW52U2hvcnRIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZW52LXNob3J0LmpzXCI7XG5pbXBvcnQgc2V0RXFIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZXEuanNcIjtcbmltcG9ydCBzZXRSZXNvdXJjZVByZWZpeEhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy9yZXNvdXJjZS1wcmVmaXguanNcIjtcbmltcG9ydCBzZXRUZXJyYWZvcm1TdGF0ZUtleUhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy90ZXJyYWZvcm0tc3RhdGUta2V5LmpzXCI7XG5pbXBvcnQgZ2V0QWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zLmpzXCI7XG5pbXBvcnQgZ2V0UHJvbXB0cywge1xuICBJbml0aWFsQW5zd2VycyxcbiAgUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSxcbn0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuXG5leHBvcnQgY29uc3QgUExPUF9FTlZJUk9OTUVOVF9HRU5FUkFUT1JfTkFNRSA9IFwiRFhfRGVwbG95bWVudEVudmlyb25tZW50XCI7XG5leHBvcnQgeyB0eXBlIEluaXRpYWxBbnN3ZXJzLCBQYXlsb2FkLCBwYXlsb2FkU2NoZW1hIH07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIHRlbXBsYXRlc1BhdGg6IHN0cmluZyxcbiAgY2xvdWRBY2NvdW50UmVwb3NpdG9yeTogQ2xvdWRBY2NvdW50UmVwb3NpdG9yeSxcbiAgY2xvdWRBY2NvdW50U2VydmljZTogQ2xvdWRBY2NvdW50U2VydmljZSxcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgZ2l0aHViPzogR2l0SHViUmVwbyxcbiAgaW5pdGlhbEFuc3dlcnM6IEluaXRpYWxBbnN3ZXJzID0ge30sXG4pIHtcbiAgc2V0RW52U2hvcnRIZWxwZXIocGxvcCk7XG4gIHNldFJlc291cmNlUHJlZml4SGVscGVyKHBsb3ApO1xuICBzZXRFcUhlbHBlcihwbG9wKTtcbiAgc2V0VGVycmFmb3JtU3RhdGVLZXlIZWxwZXIocGxvcCk7XG5cbiAgc2V0R2V0VGVycmFmb3JtQmFja2VuZChwbG9wLCBjbG91ZEFjY291bnRTZXJ2aWNlKTtcbiAgc2V0UHJvdmlzaW9uVGVycmFmb3JtQmFja2VuZEFjdGlvbihwbG9wLCBjbG91ZEFjY291bnRTZXJ2aWNlKTtcbiAgc2V0SW5pdENsb3VkQWNjb3VudHNBY3Rpb24ocGxvcCwgY2xvdWRBY2NvdW50U2VydmljZSwgZ2l0SHViU2VydmljZSk7XG4gIHNldFN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzQWN0aW9uKHBsb3ApO1xuXG4gIHBsb3Auc2V0R2VuZXJhdG9yKFBMT1BfRU5WSVJPTk1FTlRfR0VORVJBVE9SX05BTUUsIHtcbiAgICBhY3Rpb25zOiBnZXRBY3Rpb25zKHRlbXBsYXRlc1BhdGgpLFxuICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIixcbiAgICBwcm9tcHRzOiBnZXRQcm9tcHRzKHtcbiAgICAgIGNsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gICAgICBjbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgICAgZ2l0aHViLFxuICAgICAgaW5pdGlhbEFuc3dlcnMsXG4gICAgfSksXG4gIH0pO1xufVxuIl19
|
|
@@ -64,10 +64,48 @@ export declare const payloadSchema: z.ZodObject<{
|
|
|
64
64
|
}, z.core.$strip>;
|
|
65
65
|
}, z.core.$strip>;
|
|
66
66
|
export type Payload = z.infer<typeof payloadSchema>;
|
|
67
|
+
/**
|
|
68
|
+
* Prefilled answers supplied up-front by the caller (e.g. CLI flags), used to
|
|
69
|
+
* skip the matching prompts. Identifies cloud accounts by id and locations by
|
|
70
|
+
* account id, since the full domain objects aren't available before resolving.
|
|
71
|
+
*/
|
|
72
|
+
export declare const initialAnswersSchema: z.ZodObject<{
|
|
73
|
+
env: z.ZodOptional<z.ZodObject<{
|
|
74
|
+
cloudAccountIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
locations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
76
|
+
italynorth: "italynorth";
|
|
77
|
+
westeurope: "westeurope";
|
|
78
|
+
}>>>;
|
|
79
|
+
name: z.ZodOptional<z.ZodEnum<{
|
|
80
|
+
dev: "dev";
|
|
81
|
+
prod: "prod";
|
|
82
|
+
uat: "uat";
|
|
83
|
+
}>>;
|
|
84
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$strip>>;
|
|
86
|
+
init: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
runnerAppCredentials: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
clientId: z.ZodOptional<z.ZodString>;
|
|
90
|
+
id: z.ZodOptional<z.ZodString>;
|
|
91
|
+
installationId: z.ZodOptional<z.ZodString>;
|
|
92
|
+
key: z.ZodOptional<z.ZodString>;
|
|
93
|
+
}, z.core.$strip>>;
|
|
94
|
+
}, z.core.$strip>>;
|
|
95
|
+
tags: z.ZodOptional<z.ZodObject<{
|
|
96
|
+
BusinessUnit: z.ZodOptional<z.ZodString>;
|
|
97
|
+
ManagementTeam: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>>;
|
|
99
|
+
workspace: z.ZodOptional<z.ZodObject<{
|
|
100
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
101
|
+
}, z.core.$strip>>;
|
|
102
|
+
}, z.core.$strip>;
|
|
103
|
+
export type InitialAnswers = z.infer<typeof initialAnswersSchema>;
|
|
67
104
|
export type PromptsDependencies = {
|
|
68
105
|
cloudAccountRepository: CloudAccountRepository;
|
|
69
106
|
cloudAccountService: CloudAccountService;
|
|
70
107
|
github?: GitHubRepo;
|
|
108
|
+
initialAnswers?: InitialAnswers;
|
|
71
109
|
};
|
|
72
110
|
declare const prompts: (deps: PromptsDependencies) => DynamicPromptsFunction;
|
|
73
111
|
export declare const getCloudAccountChoices: (cloudAccounts: CloudAccount[]) => InquirerChoice<CloudAccount>[];
|