@quiltdata/benchling-webhook 0.6.1-20251104T053146Z → 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.
- package/dist/bin/check-logs.d.ts +7 -0
- package/dist/bin/check-logs.d.ts.map +1 -0
- package/dist/bin/check-logs.js +51 -60
- package/dist/bin/check-logs.js.map +1 -0
- package/dist/bin/dev-deploy.js +6 -6
- package/dist/bin/get-env.d.ts +16 -0
- package/dist/bin/get-env.d.ts.map +1 -0
- package/dist/bin/get-env.js +61 -31
- package/dist/bin/get-env.js.map +1 -0
- package/dist/bin/publish.d.ts +20 -0
- package/dist/bin/publish.d.ts.map +1 -0
- package/dist/bin/publish.js +280 -280
- package/dist/bin/publish.js.map +1 -0
- package/dist/bin/release.d.ts +11 -0
- package/dist/bin/release.d.ts.map +1 -0
- package/dist/bin/release.js +125 -102
- package/dist/bin/release.js.map +1 -0
- package/dist/bin/send-event.d.ts +6 -0
- package/dist/bin/send-event.d.ts.map +1 -0
- package/dist/bin/send-event.js +73 -59
- package/dist/bin/send-event.js.map +1 -0
- package/dist/bin/test-invalid-signature.d.ts +3 -0
- package/dist/bin/test-invalid-signature.d.ts.map +1 -0
- package/dist/bin/test-invalid-signature.js +64 -74
- package/dist/bin/test-invalid-signature.js.map +1 -0
- package/dist/bin/version.d.ts +13 -0
- package/dist/bin/version.d.ts.map +1 -0
- package/dist/bin/version.js +194 -181
- package/dist/bin/version.js.map +1 -0
- package/dist/package.json +6 -6
- package/package.json +6 -6
|
@@ -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"}
|
package/dist/bin/check-logs.js
CHANGED
|
@@ -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
|
|
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
|
-
}
|
|
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
|
-
}
|
|
33
|
+
}
|
|
34
|
+
else if (logType === "api") {
|
|
40
35
|
outputKey = "ApiGatewayLogGroup";
|
|
41
|
-
}
|
|
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
|
-
|
|
71
|
-
if (serviceName)
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
|
|
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)
|
|
79
|
-
|
|
80
|
-
if (
|
|
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 +=
|
|
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
|
-
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
145
136
|
console.log(`(No logs in the last ${since})`);
|
|
146
137
|
}
|
|
147
|
-
}
|
|
148
|
-
|
|
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 +=
|
|
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
|
-
}
|
|
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
|
-
}
|
|
179
|
-
|
|
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
|
-
}
|
|
228
|
-
|
|
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":";;AACA;;;GAGG;;AAEH,yBAAuB;AACvB,iDAAyC;AAEzC,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,0CAA0C;AAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAclD,SAAS,eAAe;IACpB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACnB,mDAAmD,UAAU,aAAa,UAAU,4CAA4C,EAChI,EAAE,QAAQ,EAAE,OAAO,EAAE,CACxB,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAkB,CAAC;IAC/C,CAAC;IAAC,OAAO,MAAe,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB,EAAE,OAAe;IACnE,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpB,SAAS,GAAG,aAAa,CAAC;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3B,SAAS,GAAG,oBAAoB,CAAC;IACrC,CAAC;SAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAChC,SAAS,GAAG,6BAA6B,CAAC;IAC9C,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,GAAG,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IAEtE,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,mBAAmB,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,cAAc,CAAC,WAAW,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,OAAsB,EAAE,QAAuB,EAAE,OAAe;IACpF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,mCAAmC,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,mCAAmC,CAAC,CAAC;IAC7F,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,oBAAoB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,6BAA6B,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,CAAC;IAEtE,IAAI,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,IAAI,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,IAAI,eAAe;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAE9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,CAAC,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClH,IAAI,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,CAAC,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClH,IAAI,eAAe;QAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,eAAe,CAAC,WAAW,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/H,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,IAAI;IACT,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACtF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACpF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAEnF,oBAAoB;IACpB,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAElC,gDAAgD;IAChD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpB,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAEpE,MAAM,YAAY,GAAyB;YACvC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,EAAE,WAAW,EAAE;YACvF,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,oBAAoB,CAAC,EAAE,WAAW,EAAE;YACrG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,6BAA6B,CAAC,EAAE,WAAW,EAAE;SAC/G,CAAC;QAEF,gCAAgC;QAChC,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,uDAAuD,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAEtD,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5B,IAAI,OAAO,GAAG,kBAAkB,KAAK,GAAG,CAAC;YACzC,OAAO,IAAI,aAAa,UAAU,EAAE,CAAC;YACrC,OAAO,IAAI,YAAY,KAAK,EAAE,CAAC;YAC/B,OAAO,IAAI,iBAAiB,CAAC;YAC7B,IAAI,aAAa,EAAE,CAAC;gBAChB,OAAO,IAAI,sBAAsB,aAAa,GAAG,CAAC;YACtD,CAAC;YACD,OAAO,IAAI,iBAAiB,IAAI,EAAE,CAAC;YAEnC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC5E,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QACD,OAAO;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE3C,yBAAyB;IACzB,IAAI,OAAO,GAAG,iBAAiB,QAAQ,EAAE,CAAC;IAC1C,OAAO,IAAI,aAAa,UAAU,EAAE,CAAC;IACrC,OAAO,IAAI,YAAY,KAAK,EAAE,CAAC;IAC/B,OAAO,IAAI,iBAAiB,CAAC;IAE7B,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,IAAI,sBAAsB,aAAa,GAAG,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,WAAW,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,YAAY,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,8BAA8B,KAAK,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACD,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC;QAC1E,IAAI,SAAS,IAAK,KAA4B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5D,kCAAkC;YAClC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,SAAS;IACd,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;AACpG,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACD,IAAI,EAAE,CAAC;IACX,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
package/dist/bin/dev-deploy.js
CHANGED
|
@@ -92,7 +92,7 @@ async function waitForWorkflow(commitSha, timeoutMinutes = 15) {
|
|
|
92
92
|
if (status === "completed") {
|
|
93
93
|
console.log("\n");
|
|
94
94
|
if (conclusion === "success") {
|
|
95
|
-
console.log(
|
|
95
|
+
console.log("✅ CI workflow completed successfully!");
|
|
96
96
|
console.log(` Run: ${workflowUrl}`);
|
|
97
97
|
return true;
|
|
98
98
|
}
|
|
@@ -123,10 +123,10 @@ async function waitForWorkflow(commitSha, timeoutMinutes = 15) {
|
|
|
123
123
|
console.error(` Check status at: ${workflowUrl}`);
|
|
124
124
|
}
|
|
125
125
|
else {
|
|
126
|
-
console.error(
|
|
126
|
+
console.error(" Check status at: https://github.com/quiltdata/benchling-webhook/actions");
|
|
127
127
|
}
|
|
128
128
|
console.error("\n Once the workflow completes, you can deploy manually with:");
|
|
129
|
-
console.error(
|
|
129
|
+
console.error(" npm run cli -- --image-tag <version> --yes");
|
|
130
130
|
process.exit(1);
|
|
131
131
|
}
|
|
132
132
|
async function main() {
|
|
@@ -208,14 +208,14 @@ async function main() {
|
|
|
208
208
|
console.log(`✅ Created git tag ${devTag}`);
|
|
209
209
|
// 3. Push tag to origin (triggers CI)
|
|
210
210
|
console.log("");
|
|
211
|
-
console.log(
|
|
211
|
+
console.log("Step 3: Pushing tag to origin (this triggers CI/CD)...");
|
|
212
212
|
run(`git push origin ${devTag}`);
|
|
213
213
|
console.log(`✅ Pushed tag ${devTag} to origin`);
|
|
214
214
|
console.log(" CI will now build Docker image for x86_64 (AWS-compatible)");
|
|
215
215
|
}
|
|
216
216
|
// 4. Wait for CI to complete
|
|
217
217
|
console.log("");
|
|
218
|
-
console.log(
|
|
218
|
+
console.log("Step 4: Waiting for CI to build Docker image...");
|
|
219
219
|
// Get the commit SHA for the tag (use ^{commit} to dereference annotated tags)
|
|
220
220
|
const commitShaOutput = run(`git rev-parse ${devTag}^{commit}`, { silent: true });
|
|
221
221
|
if (!commitShaOutput) {
|
|
@@ -226,7 +226,7 @@ async function main() {
|
|
|
226
226
|
await waitForWorkflow(commitSha);
|
|
227
227
|
// 5. Deploy CDK stack with CI-built image tag using secrets-only mode
|
|
228
228
|
console.log("");
|
|
229
|
-
console.log(
|
|
229
|
+
console.log("Step 5: Deploying CDK stack with CI-built image (secrets-only mode)...");
|
|
230
230
|
process.chdir((0, path_1.join)(__dirname, ".."));
|
|
231
231
|
// Use the full version with timestamp (without 'v' prefix)
|
|
232
232
|
const imageTag = devTag.replace(/^v/, "");
|
|
@@ -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"}
|
package/dist/bin/get-env.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
2
3
|
/**
|
|
3
4
|
* Get environment configuration from a Quilt catalog's config.json
|
|
4
5
|
*
|
|
@@ -12,36 +13,69 @@
|
|
|
12
13
|
* node bin/get-env.js https://quilt-catalog.yourcompany.com
|
|
13
14
|
* node bin/get-env.js https://quilt-catalog.yourcompany.com --write
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
50
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
19
55
|
// Import utility functions from lib/utils
|
|
20
|
-
const
|
|
21
|
-
|
|
56
|
+
const stack_inference_1 = require("../lib/utils/stack-inference");
|
|
22
57
|
// Parse command line arguments (only when run directly)
|
|
23
|
-
let args
|
|
58
|
+
let args;
|
|
59
|
+
let catalogUrl;
|
|
60
|
+
let outputFile;
|
|
61
|
+
let writeFile;
|
|
24
62
|
if (require.main === module) {
|
|
25
63
|
args = process.argv.slice(2);
|
|
26
64
|
catalogUrl = args.find((arg) => !arg.startsWith("--"));
|
|
27
65
|
outputFile = args.find((arg) => arg.startsWith("--output="))?.split("=")[1];
|
|
28
66
|
writeFile = args.includes("--write");
|
|
29
|
-
|
|
30
67
|
if (!catalogUrl || args.includes("--help") || args.includes("-h")) {
|
|
31
68
|
printHelp();
|
|
32
69
|
process.exit(catalogUrl ? 0 : 1);
|
|
33
70
|
}
|
|
34
71
|
}
|
|
35
|
-
|
|
36
72
|
// CLI-specific functions moved to lib/utils/stack-inference.ts
|
|
37
73
|
// Re-export for backward compatibility if needed
|
|
38
|
-
|
|
39
74
|
/**
|
|
40
75
|
* Format environment variables for output
|
|
41
76
|
*/
|
|
42
77
|
function formatEnvVars(vars) {
|
|
43
78
|
const lines = [];
|
|
44
|
-
|
|
45
79
|
lines.push("# ==============================================================================");
|
|
46
80
|
lines.push("# INFERRED CONFIGURATION");
|
|
47
81
|
lines.push("# ==============================================================================");
|
|
@@ -52,15 +86,14 @@ function formatEnvVars(vars) {
|
|
|
52
86
|
lines.push("# Some values may need manual verification or completion.");
|
|
53
87
|
lines.push("# ==============================================================================");
|
|
54
88
|
lines.push("");
|
|
55
|
-
|
|
56
89
|
for (const [key, value] of Object.entries(vars)) {
|
|
57
90
|
if (key.startsWith("#")) {
|
|
58
91
|
lines.push(`${key}: ${value}`);
|
|
59
|
-
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
60
94
|
lines.push(`${key}=${value}`);
|
|
61
95
|
}
|
|
62
96
|
}
|
|
63
|
-
|
|
64
97
|
lines.push("");
|
|
65
98
|
lines.push("# ==============================================================================");
|
|
66
99
|
lines.push("# REQUIRED VALUES NOT INFERRED - Must be filled manually");
|
|
@@ -75,10 +108,8 @@ function formatEnvVars(vars) {
|
|
|
75
108
|
lines.push("ENABLE_WEBHOOK_VERIFICATION=true");
|
|
76
109
|
lines.push("BENCHLING_TEST_ENTRY=etr_123456789");
|
|
77
110
|
lines.push("");
|
|
78
|
-
|
|
79
111
|
return lines.join("\n");
|
|
80
112
|
}
|
|
81
|
-
|
|
82
113
|
/**
|
|
83
114
|
* Print help
|
|
84
115
|
*/
|
|
@@ -111,17 +142,17 @@ function printHelp() {
|
|
|
111
142
|
console.log(" - AWS credentials with CloudFormation read permissions");
|
|
112
143
|
console.log(" - Network access to the catalog URL");
|
|
113
144
|
}
|
|
114
|
-
|
|
115
145
|
/**
|
|
116
146
|
* Main execution
|
|
117
147
|
*/
|
|
118
148
|
async function main() {
|
|
149
|
+
if (!catalogUrl) {
|
|
150
|
+
throw new Error("Catalog URL is required");
|
|
151
|
+
}
|
|
119
152
|
try {
|
|
120
|
-
const result = await inferStackConfig(catalogUrl);
|
|
121
|
-
|
|
153
|
+
const result = await (0, stack_inference_1.inferStackConfig)(catalogUrl);
|
|
122
154
|
// Format output
|
|
123
155
|
const output = formatEnvVars(result.inferredVars);
|
|
124
|
-
|
|
125
156
|
// Print summary
|
|
126
157
|
console.log("=".repeat(80));
|
|
127
158
|
console.log("INFERRED CONFIGURATION");
|
|
@@ -129,12 +160,10 @@ async function main() {
|
|
|
129
160
|
console.log("");
|
|
130
161
|
console.log(output);
|
|
131
162
|
console.log("");
|
|
132
|
-
|
|
133
163
|
// Write to file if requested
|
|
134
164
|
const targetFile = outputFile || (writeFile ? "env.inferred" : null);
|
|
135
165
|
if (targetFile) {
|
|
136
166
|
const fullPath = path.resolve(targetFile);
|
|
137
|
-
|
|
138
167
|
// Check if .env already exists and warn before proceeding
|
|
139
168
|
const envPath = path.resolve(".env");
|
|
140
169
|
if (fs.existsSync(envPath)) {
|
|
@@ -142,7 +171,6 @@ async function main() {
|
|
|
142
171
|
console.log(` Writing to ${targetFile} instead to avoid overwriting your configuration.`);
|
|
143
172
|
console.log("");
|
|
144
173
|
}
|
|
145
|
-
|
|
146
174
|
fs.writeFileSync(fullPath, output);
|
|
147
175
|
console.log("=".repeat(80));
|
|
148
176
|
console.log(`✓ Configuration written to: ${fullPath}`);
|
|
@@ -154,27 +182,29 @@ async function main() {
|
|
|
154
182
|
if (fs.existsSync(envPath)) {
|
|
155
183
|
console.log(" 3. Carefully merge with your existing .env file (DO NOT overwrite!)");
|
|
156
184
|
console.log(" Compare: diff .env env.inferred");
|
|
157
|
-
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
158
187
|
console.log(" 3. Copy to .env when ready: cp env.inferred .env");
|
|
159
188
|
}
|
|
160
189
|
console.log("");
|
|
161
|
-
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
162
192
|
console.log("=".repeat(80));
|
|
163
193
|
console.log("To save this configuration, run:");
|
|
164
194
|
console.log(` node bin/get-env.js ${catalogUrl} --write`);
|
|
165
195
|
console.log("=".repeat(80));
|
|
166
196
|
console.log("");
|
|
167
197
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
const err = error;
|
|
201
|
+
console.error("Error:", err.message);
|
|
171
202
|
process.exit(1);
|
|
172
203
|
}
|
|
173
204
|
}
|
|
174
|
-
|
|
175
205
|
if (require.main === module) {
|
|
176
206
|
main();
|
|
177
207
|
}
|
|
178
|
-
|
|
179
208
|
// For backward compatibility, re-export from the new location
|
|
180
|
-
|
|
209
|
+
__exportStar(require("../lib/utils/stack-inference"), exports);
|
|
210
|
+
//# sourceMappingURL=get-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-env.js","sourceRoot":"","sources":["../../bin/get-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* NPM publish script with dev/prod modes
|
|
4
|
+
*
|
|
5
|
+
* By default, publishes with 'dev' tag (prerelease).
|
|
6
|
+
* Use --prod to publish as 'latest' (production).
|
|
7
|
+
* Use --check to view current package status without publishing.
|
|
8
|
+
*
|
|
9
|
+
* Prerequisites:
|
|
10
|
+
* 1. You must have an NPM access token with publish permissions
|
|
11
|
+
* 2. Set the token as environment variable: NPM_TOKEN=your_token_here
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* npm run publish # Publish as dev (prerelease)
|
|
15
|
+
* npm run publish -- --prod # Publish as latest (production)
|
|
16
|
+
* npm run publish -- --check # Check package status only
|
|
17
|
+
* npm run publish -- --dry-run # Test without publishing
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../bin/publish.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG"}
|