@quiltdata/benchling-webhook 0.6.1-20251104T051705Z → 0.6.1

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.
Files changed (46) hide show
  1. package/dist/bin/check-logs.d.ts +7 -0
  2. package/dist/bin/check-logs.d.ts.map +1 -0
  3. package/dist/bin/check-logs.js +51 -60
  4. package/dist/bin/check-logs.js.map +1 -0
  5. package/dist/bin/dev-deploy.d.ts +20 -0
  6. package/dist/bin/dev-deploy.d.ts.map +1 -0
  7. package/dist/bin/dev-deploy.js +289 -0
  8. package/dist/bin/dev-deploy.js.map +1 -0
  9. package/dist/bin/get-env.d.ts +16 -0
  10. package/dist/bin/get-env.d.ts.map +1 -0
  11. package/dist/bin/get-env.js +61 -31
  12. package/dist/bin/get-env.js.map +1 -0
  13. package/dist/bin/publish.d.ts +20 -0
  14. package/dist/bin/publish.d.ts.map +1 -0
  15. package/dist/bin/publish.js +280 -280
  16. package/dist/bin/publish.js.map +1 -0
  17. package/dist/bin/release.d.ts +11 -0
  18. package/dist/bin/release.d.ts.map +1 -0
  19. package/dist/bin/release.js +125 -102
  20. package/dist/bin/release.js.map +1 -0
  21. package/dist/bin/send-event.d.ts +6 -0
  22. package/dist/bin/send-event.d.ts.map +1 -0
  23. package/dist/bin/send-event.js +73 -59
  24. package/dist/bin/send-event.js.map +1 -0
  25. package/dist/bin/test-invalid-signature.d.ts +3 -0
  26. package/dist/bin/test-invalid-signature.d.ts.map +1 -0
  27. package/dist/bin/test-invalid-signature.js +64 -74
  28. package/dist/bin/test-invalid-signature.js.map +1 -0
  29. package/dist/bin/version.d.ts +13 -0
  30. package/dist/bin/version.d.ts.map +1 -0
  31. package/dist/bin/version.js +194 -181
  32. package/dist/bin/version.js.map +1 -0
  33. package/dist/lib/utils/secrets.d.ts +14 -0
  34. package/dist/lib/utils/secrets.d.ts.map +1 -1
  35. package/dist/lib/utils/secrets.js +19 -0
  36. package/dist/lib/utils/secrets.js.map +1 -1
  37. package/dist/package.json +7 -7
  38. package/dist/scripts/config-health-check.d.ts +1 -1
  39. package/dist/scripts/config-health-check.d.ts.map +1 -1
  40. package/dist/scripts/config-health-check.js +33 -43
  41. package/dist/scripts/config-health-check.js.map +1 -1
  42. package/dist/scripts/sync-secrets.d.ts.map +1 -1
  43. package/dist/scripts/sync-secrets.js +2 -16
  44. package/dist/scripts/sync-secrets.js.map +1 -1
  45. package/package.json +7 -7
  46. package/dist/bin/cdk-dev.js +0 -308
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Check CloudWatch logs for the deployed Benchling webhook ECS service
4
+ * Uses CloudFormation stack outputs to find the correct log group
5
+ */
6
+ import "dotenv/config";
7
+ //# sourceMappingURL=check-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-logs.d.ts","sourceRoot":"","sources":["../../bin/check-logs.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,eAAe,CAAC"}
@@ -1,63 +1,58 @@
1
1
  #!/usr/bin/env node
2
+ "use strict";
2
3
  /**
3
4
  * Check CloudWatch logs for the deployed Benchling webhook ECS service
4
5
  * Uses CloudFormation stack outputs to find the correct log group
5
6
  */
6
-
7
+ Object.defineProperty(exports, "__esModule", { value: true });
7
8
  require("dotenv/config");
8
- const { execSync } = require("child_process");
9
-
9
+ const child_process_1 = require("child_process");
10
10
  const STACK_NAME = "BenchlingWebhookStack";
11
-
12
11
  // Validate required environment variables
13
12
  if (!process.env.CDK_DEFAULT_REGION) {
14
13
  console.error("Error: CDK_DEFAULT_REGION is not set in .env file");
15
14
  console.error("Please set CDK_DEFAULT_REGION in your .env file");
16
15
  process.exit(1);
17
16
  }
18
-
19
17
  const AWS_REGION = process.env.CDK_DEFAULT_REGION;
20
-
21
18
  function getStackOutputs() {
22
19
  try {
23
- const output = execSync(
24
- `aws cloudformation describe-stacks --stack-name ${STACK_NAME} --region ${AWS_REGION} --query 'Stacks[0].Outputs' --output json`,
25
- { encoding: "utf-8" },
26
- );
20
+ const output = (0, child_process_1.execSync)(`aws cloudformation describe-stacks --stack-name ${STACK_NAME} --region ${AWS_REGION} --query 'Stacks[0].Outputs' --output json`, { encoding: "utf-8" });
27
21
  return JSON.parse(output);
28
- } catch (error) {
22
+ }
23
+ catch (_error) {
29
24
  console.error(`Error: Could not get stack outputs for ${STACK_NAME}`);
30
25
  console.error("Make sure the stack is deployed and AWS credentials are configured.");
31
26
  process.exit(1);
32
27
  }
33
28
  }
34
-
35
29
  function getLogGroupFromOutputs(outputs, logType) {
36
30
  let outputKey;
37
31
  if (logType === "ecs") {
38
32
  outputKey = "EcsLogGroup";
39
- } else if (logType === "api") {
33
+ }
34
+ else if (logType === "api") {
40
35
  outputKey = "ApiGatewayLogGroup";
41
- } else if (logType === "api-exec") {
36
+ }
37
+ else if (logType === "api-exec") {
42
38
  outputKey = "ApiGatewayExecutionLogGroup";
43
39
  }
44
-
40
+ else {
41
+ console.error(`Error: Invalid log type '${logType}'`);
42
+ process.exit(1);
43
+ }
45
44
  const logGroupOutput = outputs.find((o) => o.OutputKey === outputKey);
46
-
47
45
  if (!logGroupOutput) {
48
46
  console.error(`Error: Could not find ${outputKey} in stack outputs`);
49
47
  console.error("Make sure the stack has been deployed with the latest changes.");
50
48
  process.exit(1);
51
49
  }
52
-
53
50
  return logGroupOutput.OutputValue;
54
51
  }
55
-
56
52
  function printStackInfo(outputs, logGroup, logType) {
57
53
  console.log("=".repeat(80));
58
54
  console.log("Benchling Webhook Stack Information");
59
55
  console.log("=".repeat(80));
60
-
61
56
  const clusterName = outputs.find((o) => o.OutputKey === "FargateServiceClusterNameCD3B109F");
62
57
  const serviceName = outputs.find((o) => o.OutputKey === "FargateServiceServiceName24CFD869");
63
58
  const webhookEndpoint = outputs.find((o) => o.OutputKey === "WebhookEndpoint");
@@ -66,23 +61,27 @@ function printStackInfo(outputs, logGroup, logType) {
66
61
  const apiLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup");
67
62
  const apiExecLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup");
68
63
  const albDns = outputs.find((o) => o.OutputKey === "LoadBalancerDNS");
69
-
70
- if (clusterName) console.log(`Cluster: ${clusterName.OutputValue}`);
71
- if (serviceName) console.log(`Service: ${serviceName.OutputValue}`);
72
- if (webhookEndpoint) console.log(`Endpoint: ${webhookEndpoint.OutputValue}`);
73
- if (albDns) console.log(`ALB DNS: ${albDns.OutputValue}`);
74
- if (version) console.log(`Version: ${version.OutputValue}`);
75
-
64
+ if (clusterName)
65
+ console.log(`Cluster: ${clusterName.OutputValue}`);
66
+ if (serviceName)
67
+ console.log(`Service: ${serviceName.OutputValue}`);
68
+ if (webhookEndpoint)
69
+ console.log(`Endpoint: ${webhookEndpoint.OutputValue}`);
70
+ if (albDns)
71
+ console.log(`ALB DNS: ${albDns.OutputValue}`);
72
+ if (version)
73
+ console.log(`Version: ${version.OutputValue}`);
76
74
  console.log("");
77
75
  console.log("Log Groups:");
78
- if (ecsLogGroup) console.log(` ECS: ${ecsLogGroup.OutputValue}${logType === "ecs" ? " (viewing)" : ""}`);
79
- if (apiLogGroup) console.log(` API Access: ${apiLogGroup.OutputValue}${logType === "api" ? " (viewing)" : ""}`);
80
- if (apiExecLogGroup) console.log(` API Exec: ${apiExecLogGroup.OutputValue}${logType === "api-exec" ? " (viewing)" : ""}`);
81
-
76
+ if (ecsLogGroup)
77
+ console.log(` ECS: ${ecsLogGroup.OutputValue}${logType === "ecs" ? " (viewing)" : ""}`);
78
+ if (apiLogGroup)
79
+ console.log(` API Access: ${apiLogGroup.OutputValue}${logType === "api" ? " (viewing)" : ""}`);
80
+ if (apiExecLogGroup)
81
+ console.log(` API Exec: ${apiExecLogGroup.OutputValue}${logType === "api-exec" ? " (viewing)" : ""}`);
82
82
  console.log("=".repeat(80));
83
83
  console.log("");
84
84
  }
85
-
86
85
  function main() {
87
86
  const args = process.argv.slice(2);
88
87
  const logType = args.find((arg) => arg.startsWith("--type="))?.split("=")[1] || "all";
@@ -90,27 +89,22 @@ function main() {
90
89
  const since = args.find((arg) => arg.startsWith("--since="))?.split("=")[1] || "5m";
91
90
  const follow = args.includes("--follow") || args.includes("-f");
92
91
  const tail = args.find((arg) => arg.startsWith("--tail="))?.split("=")[1] || "100";
93
-
94
92
  // Validate log type
95
93
  if (!["ecs", "api", "api-exec", "all"].includes(logType)) {
96
94
  console.error("Error: --type must be 'ecs', 'api', 'api-exec', or 'all'");
97
95
  process.exit(1);
98
96
  }
99
-
100
97
  // Get stack outputs
101
98
  const outputs = getStackOutputs();
102
-
103
99
  // Handle 'all' type - show all three log groups
104
100
  if (logType === "all") {
105
101
  printStackInfo(outputs, null, "all");
106
102
  console.log("Showing logs from all sources (most recent first):\n");
107
-
108
103
  const logGroupDefs = [
109
104
  { type: "ECS", group: outputs.find((o) => o.OutputKey === "EcsLogGroup")?.OutputValue },
110
105
  { type: "API-Access", group: outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup")?.OutputValue },
111
106
  { type: "API-Exec", group: outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup")?.OutputValue },
112
107
  ];
113
-
114
108
  // Warn about missing log groups
115
109
  const missingGroups = logGroupDefs.filter(lg => !lg.group);
116
110
  if (missingGroups.length > 0) {
@@ -120,63 +114,60 @@ function main() {
120
114
  });
121
115
  console.log("");
122
116
  }
123
-
124
117
  const logGroups = logGroupDefs.filter(lg => lg.group);
125
-
126
118
  for (const { type, group } of logGroups) {
127
119
  console.log(`\n${"=".repeat(80)}`);
128
120
  console.log(`${type}: ${group}`);
129
121
  console.log("=".repeat(80));
130
-
131
122
  let command = `aws logs tail "${group}"`;
132
123
  command += ` --region ${AWS_REGION}`;
133
124
  command += ` --since ${since}`;
134
- command += ` --format short`;
125
+ command += " --format short";
135
126
  if (filterPattern) {
136
127
  command += ` --filter-pattern "${filterPattern}"`;
137
128
  }
138
129
  command += ` 2>&1 | tail -${tail}`;
139
-
140
130
  try {
141
- const output = execSync(command, { encoding: "utf-8", shell: "/bin/bash" });
131
+ const output = (0, child_process_1.execSync)(command, { encoding: "utf-8", shell: "/bin/bash" });
142
132
  if (output.trim()) {
143
133
  console.log(output);
144
- } else {
134
+ }
135
+ else {
145
136
  console.log(`(No logs in the last ${since})`);
146
137
  }
147
- } catch (error) {
148
- console.log(`Error reading ${type} logs: ${error.message}`);
138
+ }
139
+ catch (error) {
140
+ const errorMessage = error instanceof Error ? error.message : String(error);
141
+ console.log(`Error reading ${type} logs: ${errorMessage}`);
149
142
  }
150
143
  }
151
144
  return;
152
145
  }
153
-
154
146
  const logGroup = getLogGroupFromOutputs(outputs, logType);
155
147
  printStackInfo(outputs, logGroup, logType);
156
-
157
148
  // Build AWS logs command
158
149
  let command = `aws logs tail ${logGroup}`;
159
150
  command += ` --region ${AWS_REGION}`;
160
151
  command += ` --since ${since}`;
161
- command += ` --format short`;
162
-
152
+ command += " --format short";
163
153
  if (filterPattern) {
164
154
  command += ` --filter-pattern "${filterPattern}"`;
165
155
  }
166
-
167
156
  if (follow) {
168
157
  command += " --follow";
169
158
  console.log("Following logs (Press Ctrl+C to stop)...\n");
170
- } else {
159
+ }
160
+ else {
171
161
  command += ` | tail -${tail}`;
172
162
  console.log(`Showing last ${tail} log entries from the past ${since}...\n`);
173
163
  }
174
-
175
164
  // Execute logs command
176
165
  try {
177
- execSync(command, { stdio: "inherit" });
178
- } catch (error) {
179
- if (error.status !== 130) {
166
+ (0, child_process_1.execSync)(command, { stdio: "inherit" });
167
+ }
168
+ catch (error) {
169
+ const hasStatus = error && typeof error === "object" && "status" in error;
170
+ if (hasStatus && error.status !== 130) {
180
171
  // Ignore Ctrl+C exit (status 130)
181
172
  console.error("\nError fetching logs. Make sure:");
182
173
  console.error("1. The stack is deployed");
@@ -186,7 +177,6 @@ function main() {
186
177
  }
187
178
  }
188
179
  }
189
-
190
180
  function printHelp() {
191
181
  console.log("Usage: npm run logs [options]");
192
182
  console.log("");
@@ -214,18 +204,19 @@ function printHelp() {
214
204
  console.log(" npm run logs -- --type=ecs --follow # Follow ECS logs");
215
205
  console.log(" npm run logs -- --type=api-exec --since=10m # Last 10 min of execution logs");
216
206
  }
217
-
218
207
  if (require.main === module) {
219
208
  const args = process.argv.slice(2);
220
209
  if (args.includes("--help") || args.includes("-h")) {
221
210
  printHelp();
222
211
  process.exit(0);
223
212
  }
224
-
225
213
  try {
226
214
  main();
227
- } catch (error) {
228
- console.error("Error:", error.message);
215
+ }
216
+ catch (error) {
217
+ const errorMessage = error instanceof Error ? error.message : String(error);
218
+ console.error("Error:", errorMessage);
229
219
  process.exit(1);
230
220
  }
231
221
  }
222
+ //# sourceMappingURL=check-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-logs.js","sourceRoot":"","sources":["../../bin/check-logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ts-node
2
+ /**
3
+ * Development deployment workflow script
4
+ *
5
+ * This script:
6
+ * 1. Creates a dev git tag with timestamp (v{version}-{timestamp})
7
+ * 2. Pushes the tag to GitHub (triggers CI to build Docker image)
8
+ * 3. Waits for CI/CD pipeline to complete (monitors GitHub Actions)
9
+ * 4. Deploys CDK stack using the CI-built image tag
10
+ *
11
+ * Usage:
12
+ * npm run deploy:dev # Full workflow
13
+ * npm run deploy:dev -- --continue # Skip tag creation, wait for CI and deploy
14
+ * npm run deploy:dev -- --tag <tag> # Use specific existing tag
15
+ *
16
+ * IMPORTANT: This uses CI-built images (x86_64), NOT local builds.
17
+ * Local ARM builds would fail in AWS which runs on x86_64.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=dev-deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-deploy.d.ts","sourceRoot":"","sources":["../../bin/dev-deploy.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,289 @@
1
+ #!/usr/bin/env ts-node
2
+ "use strict";
3
+ /**
4
+ * Development deployment workflow script
5
+ *
6
+ * This script:
7
+ * 1. Creates a dev git tag with timestamp (v{version}-{timestamp})
8
+ * 2. Pushes the tag to GitHub (triggers CI to build Docker image)
9
+ * 3. Waits for CI/CD pipeline to complete (monitors GitHub Actions)
10
+ * 4. Deploys CDK stack using the CI-built image tag
11
+ *
12
+ * Usage:
13
+ * npm run deploy:dev # Full workflow
14
+ * npm run deploy:dev -- --continue # Skip tag creation, wait for CI and deploy
15
+ * npm run deploy:dev -- --tag <tag> # Use specific existing tag
16
+ *
17
+ * IMPORTANT: This uses CI-built images (x86_64), NOT local builds.
18
+ * Local ARM builds would fail in AWS which runs on x86_64.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const child_process_1 = require("child_process");
22
+ const fs_1 = require("fs");
23
+ const path_1 = require("path");
24
+ const os_1 = require("os");
25
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
26
+ const secrets_1 = require("../lib/utils/secrets");
27
+ // Read package.json for version
28
+ const packagePath = (0, path_1.join)(__dirname, "..", "package.json");
29
+ const pkg = JSON.parse((0, fs_1.readFileSync)(packagePath, "utf8"));
30
+ function run(command, options = {}) {
31
+ const silent = options.silent || false;
32
+ if (!silent) {
33
+ console.log(`\n$ ${command}\n`);
34
+ }
35
+ try {
36
+ return (0, child_process_1.execSync)(command, {
37
+ stdio: silent ? "pipe" : "inherit",
38
+ encoding: "utf-8",
39
+ ...options,
40
+ });
41
+ }
42
+ catch (error) {
43
+ if (!silent) {
44
+ console.error(`\n❌ Command failed: ${command}`);
45
+ }
46
+ if (options.allowFailure) {
47
+ return null;
48
+ }
49
+ process.exit(1);
50
+ }
51
+ }
52
+ async function waitForWorkflow(commitSha, timeoutMinutes = 15) {
53
+ console.log("");
54
+ console.log(`Waiting for CI workflow to complete (timeout: ${timeoutMinutes} minutes)...`);
55
+ console.log("");
56
+ // Check if gh CLI is available
57
+ try {
58
+ (0, child_process_1.execSync)("gh --version", { stdio: "ignore" });
59
+ }
60
+ catch (e) {
61
+ console.error("❌ GitHub CLI (gh) is not installed or not in PATH");
62
+ console.error(" Install from: https://cli.github.com/");
63
+ console.error("\n Alternatively, monitor the workflow manually and deploy when complete:");
64
+ console.error(" 1. Watch: https://github.com/quiltdata/benchling-webhook/actions");
65
+ console.error(" 2. Deploy: npm run cli -- --image-tag <version> --yes");
66
+ process.exit(1);
67
+ }
68
+ const startTime = Date.now();
69
+ const timeoutMs = timeoutMinutes * 60 * 1000;
70
+ let attempt = 0;
71
+ let workflowUrl = null;
72
+ while (Date.now() - startTime < timeoutMs) {
73
+ attempt++;
74
+ try {
75
+ // Use gh to list recent workflow runs for this commit
76
+ const result = run(`gh run list --commit ${commitSha} --json status,conclusion,url,databaseId --limit 5`, {
77
+ silent: true,
78
+ allowFailure: true,
79
+ });
80
+ if (!result) {
81
+ process.stdout.write(`\r Attempt ${attempt}: Waiting for workflow to start (commit ${commitSha.substring(0, 7)})...`);
82
+ await new Promise((resolve) => setTimeout(resolve, 10000));
83
+ continue;
84
+ }
85
+ const runs = JSON.parse(result);
86
+ if (runs && runs.length > 0) {
87
+ const workflowRun = runs[0]; // Most recent run for this commit
88
+ const status = workflowRun.status;
89
+ const conclusion = workflowRun.conclusion;
90
+ workflowUrl = workflowRun.url;
91
+ process.stdout.write(`\r Attempt ${attempt}: Status=${status}, Conclusion=${conclusion || "pending"}... ${workflowUrl}`);
92
+ if (status === "completed") {
93
+ console.log("\n");
94
+ if (conclusion === "success") {
95
+ console.log("✅ CI workflow completed successfully!");
96
+ console.log(` Run: ${workflowUrl}`);
97
+ return true;
98
+ }
99
+ else {
100
+ console.error(`\n❌ CI workflow failed with conclusion: ${conclusion}`);
101
+ console.error(` Run: ${workflowUrl}`);
102
+ console.error(" Please check the workflow logs and fix any issues.");
103
+ process.exit(1);
104
+ }
105
+ }
106
+ }
107
+ else {
108
+ process.stdout.write(`\r Attempt ${attempt}: Waiting for workflow to start (commit ${commitSha.substring(0, 7)})...`);
109
+ }
110
+ }
111
+ catch (error) {
112
+ // Errors are non-fatal, just retry
113
+ if (attempt % 10 === 0) {
114
+ console.log(`\n Warning: ${error.message}`);
115
+ }
116
+ }
117
+ // Wait 10 seconds between checks
118
+ await new Promise((resolve) => setTimeout(resolve, 10000));
119
+ }
120
+ console.error("\n\n❌ Timeout waiting for CI workflow to complete");
121
+ console.error(` Waited ${timeoutMinutes} minutes`);
122
+ if (workflowUrl) {
123
+ console.error(` Check status at: ${workflowUrl}`);
124
+ }
125
+ else {
126
+ console.error(" Check status at: https://github.com/quiltdata/benchling-webhook/actions");
127
+ }
128
+ console.error("\n Once the workflow completes, you can deploy manually with:");
129
+ console.error(" npm run cli -- --image-tag <version> --yes");
130
+ process.exit(1);
131
+ }
132
+ async function main() {
133
+ console.log("🚀 Starting development deployment workflow...");
134
+ console.log("");
135
+ console.log("This workflow uses CI-built Docker images (x86_64 for AWS).");
136
+ console.log("Local ARM builds are NOT used as they would fail in AWS.");
137
+ console.log("");
138
+ // Parse command line arguments
139
+ const args = process.argv.slice(2);
140
+ const continueMode = args.includes("--continue");
141
+ const tagIndex = args.indexOf("--tag");
142
+ const specificTag = tagIndex !== -1 ? args[tagIndex + 1] : null;
143
+ let devTag;
144
+ let version;
145
+ if (specificTag) {
146
+ // Use specific tag provided by user
147
+ devTag = specificTag;
148
+ version = specificTag.replace(/^v/, "").split("-")[0]; // Extract version from tag
149
+ console.log(`Using specified tag: ${devTag}`);
150
+ console.log(`Extracted version: ${version}`);
151
+ }
152
+ else if (continueMode) {
153
+ // Continue mode - find most recent dev tag
154
+ console.log("Continue mode: Finding most recent dev tag...");
155
+ try {
156
+ const tagsOutput = run("git tag --sort=-creatordate", { silent: true });
157
+ if (!tagsOutput) {
158
+ throw new Error("No tags found");
159
+ }
160
+ const tags = tagsOutput.trim().split("\n");
161
+ const recentDevTag = tags.find((t) => t.match(/^v[\d.]+-.+Z$/));
162
+ if (!recentDevTag) {
163
+ console.error("❌ No dev tags found");
164
+ console.error(" Run without --continue to create a new dev tag first");
165
+ process.exit(1);
166
+ }
167
+ devTag = recentDevTag;
168
+ version = devTag.replace(/^v/, "").split("-")[0];
169
+ console.log(`✅ Found recent dev tag: ${devTag}`);
170
+ console.log(` Version: ${version}`);
171
+ }
172
+ catch (e) {
173
+ console.error("❌ Failed to find recent dev tag");
174
+ process.exit(1);
175
+ }
176
+ }
177
+ else {
178
+ // Normal mode - create new tag
179
+ // 1. Check for uncommitted changes
180
+ console.log("Step 1: Checking for uncommitted changes...");
181
+ try {
182
+ (0, child_process_1.execSync)("git diff-index --quiet HEAD --", { stdio: "ignore" });
183
+ }
184
+ catch (e) {
185
+ console.error("❌ You have uncommitted changes");
186
+ console.error(" Commit or stash your changes before creating a dev deployment");
187
+ process.exit(1);
188
+ }
189
+ console.log("✅ Working directory is clean");
190
+ // 2. Generate dev tag name
191
+ version = pkg.version;
192
+ const timestamp = new Date().toISOString().replace(/[-:]/g, "").replace(/\.\d+Z$/, "Z");
193
+ devTag = `v${version}-${timestamp}`;
194
+ console.log("");
195
+ console.log(`Step 2: Creating dev tag: ${devTag}`);
196
+ // Check if tag already exists
197
+ try {
198
+ (0, child_process_1.execSync)(`git rev-parse ${devTag}`, { stdio: "ignore" });
199
+ console.error(`❌ Tag ${devTag} already exists`);
200
+ process.exit(1);
201
+ }
202
+ catch (e) {
203
+ // Tag doesn't exist, continue
204
+ }
205
+ // Create tag
206
+ const message = `Development release ${devTag}\n\nThis is a pre-release for testing purposes.`;
207
+ run(`git tag -a ${devTag} -m "${message}"`);
208
+ console.log(`✅ Created git tag ${devTag}`);
209
+ // 3. Push tag to origin (triggers CI)
210
+ console.log("");
211
+ console.log("Step 3: Pushing tag to origin (this triggers CI/CD)...");
212
+ run(`git push origin ${devTag}`);
213
+ console.log(`✅ Pushed tag ${devTag} to origin`);
214
+ console.log(" CI will now build Docker image for x86_64 (AWS-compatible)");
215
+ }
216
+ // 4. Wait for CI to complete
217
+ console.log("");
218
+ console.log("Step 4: Waiting for CI to build Docker image...");
219
+ // Get the commit SHA for the tag (use ^{commit} to dereference annotated tags)
220
+ const commitShaOutput = run(`git rev-parse ${devTag}^{commit}`, { silent: true });
221
+ if (!commitShaOutput) {
222
+ console.error("❌ Failed to get commit SHA");
223
+ process.exit(1);
224
+ }
225
+ const commitSha = commitShaOutput.trim();
226
+ await waitForWorkflow(commitSha);
227
+ // 5. Deploy CDK stack with CI-built image tag using secrets-only mode
228
+ console.log("");
229
+ console.log("Step 5: Deploying CDK stack with CI-built image (secrets-only mode)...");
230
+ process.chdir((0, path_1.join)(__dirname, ".."));
231
+ // Use the full version with timestamp (without 'v' prefix)
232
+ const imageTag = devTag.replace(/^v/, "");
233
+ // Secrets-only mode parameters
234
+ const quiltStackArn = "arn:aws:cloudformation:us-east-1:712023778557:stack/quilt-staging/e51b0c10-10c9-11ee-9b41-12fda87498a3";
235
+ const benchlingSecret = (0, secrets_1.generateSecretName)("default", "quilt-dtt");
236
+ run(`npm run deploy:prod -- --quilt-stack-arn ${quiltStackArn} --benchling-secret ${benchlingSecret} --image-tag ${imageTag} --yes`);
237
+ // 6. Get and store the deployment endpoint
238
+ console.log("");
239
+ console.log("Step 6: Retrieving deployment endpoint...");
240
+ try {
241
+ const cloudformation = new client_cloudformation_1.CloudFormationClient({ region: "us-east-1" });
242
+ const command = new client_cloudformation_1.DescribeStacksCommand({ StackName: "BenchlingWebhookStack" });
243
+ const response = await cloudformation.send(command);
244
+ if (response.Stacks && response.Stacks.length > 0) {
245
+ const stack = response.Stacks[0];
246
+ const endpointOutput = stack.Outputs?.find((o) => o.OutputKey === "WebhookEndpoint");
247
+ const webhookUrl = endpointOutput?.OutputValue || "";
248
+ if (webhookUrl) {
249
+ // Store endpoint in XDG config
250
+ const configDir = (0, path_1.join)((0, os_1.homedir)(), ".config", "benchling-webhook");
251
+ const deployJsonPath = (0, path_1.join)(configDir, "deploy.json");
252
+ // Read existing deploy.json or create new one
253
+ let deployConfig = {};
254
+ if ((0, fs_1.existsSync)(deployJsonPath)) {
255
+ deployConfig = JSON.parse((0, fs_1.readFileSync)(deployJsonPath, "utf8"));
256
+ }
257
+ // Update dev section
258
+ deployConfig.dev = {
259
+ endpoint: webhookUrl,
260
+ imageTag: imageTag,
261
+ deployedAt: new Date().toISOString(),
262
+ stackName: "BenchlingWebhookStack",
263
+ };
264
+ // Ensure config directory exists
265
+ if (!(0, fs_1.existsSync)(configDir)) {
266
+ (0, fs_1.mkdirSync)(configDir, { recursive: true });
267
+ }
268
+ // Write deploy.json
269
+ (0, fs_1.writeFileSync)(deployJsonPath, JSON.stringify(deployConfig, null, 2));
270
+ console.log(`✅ Stored deployment endpoint in ${deployJsonPath}`);
271
+ console.log(` Endpoint: ${webhookUrl}`);
272
+ }
273
+ }
274
+ }
275
+ catch (error) {
276
+ console.warn(`⚠️ Could not retrieve/store deployment endpoint: ${error.message}`);
277
+ }
278
+ console.log("");
279
+ console.log("✅ Development deployment complete!");
280
+ console.log("");
281
+ console.log(`Dev tag: ${devTag}`);
282
+ console.log(`Image tag: ${imageTag} (built by CI for x86_64)`);
283
+ console.log("");
284
+ }
285
+ main().catch((error) => {
286
+ console.error("\n❌ Error:", error.message);
287
+ process.exit(1);
288
+ });
289
+ //# sourceMappingURL=dev-deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-deploy.js","sourceRoot":"","sources":["../../bin/dev-deploy.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;GAgBG;;AAEH,iDAAyC;AACzC,2BAAwE;AACxE,+BAA4B;AAC5B,2BAA6B;AAC7B,0EAA6F;AAC7F,kDAA0D;AA4B1D,gCAAgC;AAChC,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvE,SAAS,GAAG,CAAC,OAAe,EAAE,UAAsB,EAAE;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC;QACD,OAAO,IAAA,wBAAQ,EAAC,OAAO,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAClC,QAAQ,EAAE,OAAO;YACjB,GAAG,OAAO;SACb,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,iBAAyB,EAAE;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iDAAiD,cAAc,cAAc,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+BAA+B;IAC/B,IAAI,CAAC;QACD,IAAA,wBAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;QAEV,IAAI,CAAC;YACD,sDAAsD;YACtD,MAAM,MAAM,GAAG,GAAG,CACd,wBAAwB,SAAS,oDAAoD,EACrF;gBACI,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,IAAI;aACrB,CACJ,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,eAAe,OAAO,2CAA2C,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CACnG,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,SAAS;YACb,CAAC;YAED,MAAM,IAAI,GAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;gBAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAClC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;gBAC1C,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC;gBAE9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,eAAe,OAAO,YAAY,MAAM,gBAAgB,UAAU,IAAI,SAAS,OAAO,WAAW,EAAE,CACtG,CAAC;gBAEF,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;wBACrD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;wBACtC,OAAO,IAAI,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;wBACvE,OAAO,CAAC,KAAK,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;wBACxC,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;wBACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB,eAAe,OAAO,2CAA2C,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CACnG,CAAC;YACN,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,mCAAmC;YACnC,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,gBAAiB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,iCAAiC;QACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,aAAa,cAAc,UAAU,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACjF,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+BAA+B;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhE,IAAI,MAAc,CAAC;IACnB,IAAI,OAAe,CAAC;IAEpB,IAAI,WAAW,EAAE,CAAC;QACd,oCAAoC;QACpC,MAAM,GAAG,WAAW,CAAC;QACrB,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAClF,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACtB,2CAA2C;QAC3C,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,GAAG,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAEhE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,GAAG,YAAY,CAAC;YACtB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,+BAA+B;QAC/B,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,IAAI,CAAC;YACD,IAAA,wBAAQ,EAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,2BAA2B;QAC3B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACxF,MAAM,GAAG,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QAEnD,8BAA8B;QAC9B,IAAI,CAAC;YACD,IAAA,wBAAQ,EAAC,iBAAiB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,CAAC,SAAS,MAAM,iBAAiB,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,8BAA8B;QAClC,CAAC;QAED,aAAa;QACb,MAAM,OAAO,GAAG,uBAAuB,MAAM,iDAAiD,CAAC;QAC/F,GAAG,CAAC,cAAc,MAAM,QAAQ,OAAO,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAE3C,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,GAAG,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,YAAY,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IACjF,CAAC;IAED,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAE/D,+EAA+E;IAC/E,MAAM,eAAe,GAAG,GAAG,CAAC,iBAAiB,MAAM,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;IAEzC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAEjC,sEAAsE;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IACtF,OAAO,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACrC,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,MAAM,aAAa,GACf,wGAAwG,CAAC;IAC7G,MAAM,eAAe,GAAG,IAAA,4BAAkB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEnE,GAAG,CACC,4CAA4C,aAAa,uBAAuB,eAAe,gBAAgB,QAAQ,QAAQ,CAClI,CAAC;IAEF,2CAA2C;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAEzD,IAAI,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,4CAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,6CAAqB,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC;YACrF,MAAM,UAAU,GAAG,cAAc,EAAE,WAAW,IAAI,EAAE,CAAC;YAErD,IAAI,UAAU,EAAE,CAAC;gBACb,+BAA+B;gBAC/B,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;gBAClE,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAEtD,8CAA8C;gBAC9C,IAAI,YAAY,GAAiB,EAAE,CAAC;gBACpC,IAAI,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;oBAC7B,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED,qBAAqB;gBACrB,YAAY,CAAC,GAAG,GAAG;oBACf,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACpC,SAAS,EAAE,uBAAuB;iBACrC,CAAC;gBAEF,iCAAiC;gBACjC,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;oBACzB,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAED,oBAAoB;gBACpB,IAAA,kBAAa,EAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,mCAAmC,cAAc,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qDAAsD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,2BAA2B,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Get environment configuration from a Quilt catalog's config.json
4
+ *
5
+ * This script fetches config.json from a Quilt catalog URL and attempts to:
6
+ * 1. Parse the configuration
7
+ * 2. Query AWS CloudFormation to find the stack using resource identifiers
8
+ * 3. Extract stack outputs and parameters
9
+ * 4. Generate environment variables for .env
10
+ *
11
+ * Usage:
12
+ * node bin/get-env.js https://quilt-catalog.yourcompany.com
13
+ * node bin/get-env.js https://quilt-catalog.yourcompany.com --write
14
+ */
15
+ export * from "../lib/utils/stack-inference";
16
+ //# sourceMappingURL=get-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-env.d.ts","sourceRoot":"","sources":["../../bin/get-env.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AA+KH,cAAc,8BAA8B,CAAC"}