@quiltdata/benchling-webhook 0.7.2-20251106T010445Z → 0.7.3-20251106T131511Z
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 +33 -159
- package/dist/bin/benchling-webhook.d.ts +0 -1
- package/dist/bin/benchling-webhook.d.ts.map +1 -1
- package/dist/bin/benchling-webhook.js +2 -7
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/cli.js +17 -12
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/commands/config-profiles.d.ts.map +1 -1
- package/dist/bin/commands/config-profiles.js +1 -2
- package/dist/bin/commands/config-profiles.js.map +1 -1
- package/dist/bin/commands/deploy.d.ts +1 -1
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +83 -10
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/commands/infer-quilt-config.d.ts +6 -15
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
- package/dist/bin/commands/infer-quilt-config.js +96 -69
- package/dist/bin/commands/infer-quilt-config.js.map +1 -1
- package/dist/bin/commands/init.d.ts +5 -1
- package/dist/bin/commands/init.d.ts.map +1 -1
- package/dist/bin/commands/init.js +19 -111
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/manifest.d.ts +0 -11
- package/dist/bin/commands/manifest.d.ts.map +1 -1
- package/dist/bin/commands/manifest.js +8 -22
- package/dist/bin/commands/manifest.js.map +1 -1
- package/dist/bin/commands/setup-profile.d.ts.map +1 -1
- package/dist/bin/commands/setup-profile.js +15 -17
- package/dist/bin/commands/setup-profile.js.map +1 -1
- package/dist/bin/commands/setup-wizard.d.ts +0 -2
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +227 -405
- package/dist/bin/commands/setup-wizard.js.map +1 -1
- package/dist/bin/commands/sync-secrets.js +2 -2
- package/dist/lib/benchling-webhook-stack.d.ts +0 -6
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +21 -20
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +0 -8
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +1 -18
- package/dist/lib/configuration-saver.js.map +1 -1
- package/dist/lib/fargate-service.d.ts +4 -2
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +25 -12
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/types/config.d.ts +9 -70
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +2 -3
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config-loader.d.ts.map +1 -1
- package/dist/lib/utils/config-loader.js +3 -2
- package/dist/lib/utils/config-loader.js.map +1 -1
- package/dist/lib/utils/config-resolver.d.ts +2 -2
- package/dist/lib/utils/config-resolver.d.ts.map +1 -1
- package/dist/lib/utils/config-resolver.js +14 -7
- package/dist/lib/utils/config-resolver.js.map +1 -1
- package/dist/lib/utils/config.d.ts +1 -1
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +7 -3
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/sqs.d.ts +13 -0
- package/dist/lib/utils/sqs.d.ts.map +1 -0
- package/dist/lib/utils/sqs.js +22 -0
- package/dist/lib/utils/sqs.js.map +1 -0
- package/dist/lib/utils/stack-inference.d.ts.map +1 -1
- package/dist/lib/utils/stack-inference.js +8 -6
- package/dist/lib/utils/stack-inference.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +3 -1
- package/dist/lib/xdg-config.d.ts.map +1 -1
- package/dist/lib/xdg-config.js +7 -1
- package/dist/lib/xdg-config.js.map +1 -1
- package/dist/package.json +7 -4
- package/dist/scripts/check-logs.d.ts +1 -1
- package/dist/scripts/check-logs.d.ts.map +1 -1
- package/dist/scripts/check-logs.js +10 -4
- package/dist/scripts/check-logs.js.map +1 -1
- package/dist/scripts/get-dev-version.d.ts +16 -0
- package/dist/scripts/get-dev-version.d.ts.map +1 -0
- package/dist/scripts/get-dev-version.js +57 -0
- package/dist/scripts/get-dev-version.js.map +1 -0
- package/dist/scripts/send-event.d.ts +1 -1
- package/dist/scripts/send-event.d.ts.map +1 -1
- package/dist/scripts/send-event.js +4 -5
- package/dist/scripts/send-event.js.map +1 -1
- package/package.json +7 -4
- package/dist/lib/xdg-cli-wrapper.d.ts +0 -113
- package/dist/lib/xdg-cli-wrapper.d.ts.map +0 -1
- package/dist/lib/xdg-cli-wrapper.js +0 -289
- package/dist/lib/xdg-cli-wrapper.js.map +0 -1
- package/dist/scripts/infer-quilt-config.d.ts +0 -47
- package/dist/scripts/infer-quilt-config.d.ts.map +0 -1
- package/dist/scripts/infer-quilt-config.js +0 -315
- package/dist/scripts/infer-quilt-config.js.map +0 -1
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* TypeScript Wrapper for Python XDG CLI
|
|
4
|
-
*
|
|
5
|
-
* Provides type-safe access to the Python XDG configuration CLI from TypeScript.
|
|
6
|
-
* This ensures consistency by delegating all XDG operations to the Python implementation.
|
|
7
|
-
*
|
|
8
|
-
* @module lib/xdg-cli-wrapper
|
|
9
|
-
*/
|
|
10
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.XDGCLIWrapper = exports.XDGCLIError = void 0;
|
|
45
|
-
const child_process_1 = require("child_process");
|
|
46
|
-
const path = __importStar(require("path"));
|
|
47
|
-
/**
|
|
48
|
-
* Base class for XDG CLI errors
|
|
49
|
-
*/
|
|
50
|
-
class XDGCLIError extends Error {
|
|
51
|
-
constructor(message, command, exitCode, stderr) {
|
|
52
|
-
super(message);
|
|
53
|
-
this.command = command;
|
|
54
|
-
this.exitCode = exitCode;
|
|
55
|
-
this.stderr = stderr;
|
|
56
|
-
this.name = "XDGCLIError";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.XDGCLIError = XDGCLIError;
|
|
60
|
-
/**
|
|
61
|
-
* Get the path to the Python CLI script
|
|
62
|
-
*/
|
|
63
|
-
function getCLIPath() {
|
|
64
|
-
return path.join(__dirname, "..", "docker", "scripts", "benchling-webhook-config");
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Execute Python CLI command
|
|
68
|
-
*/
|
|
69
|
-
function executeCLI(args, options = {}) {
|
|
70
|
-
const cliPath = getCLIPath();
|
|
71
|
-
const command = `python3 ${cliPath} ${args.join(" ")}`;
|
|
72
|
-
try {
|
|
73
|
-
const result = (0, child_process_1.execSync)(command, {
|
|
74
|
-
encoding: "utf-8",
|
|
75
|
-
stdio: options.captureStdout ? "pipe" : ["pipe", "pipe", "inherit"],
|
|
76
|
-
maxBuffer: 10 * 1024 * 1024, // 10MB buffer
|
|
77
|
-
});
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
const err = error;
|
|
82
|
-
const stderr = err.stderr?.toString() || err.message || "Unknown error";
|
|
83
|
-
const exitCode = err.status || 1;
|
|
84
|
-
throw new XDGCLIError(`XDG CLI command failed: ${command}`, command, exitCode, stderr);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* XDG CLI Wrapper Class
|
|
89
|
-
*
|
|
90
|
-
* Provides TypeScript interface to Python XDG CLI operations.
|
|
91
|
-
*/
|
|
92
|
-
class XDGCLIWrapper {
|
|
93
|
-
/**
|
|
94
|
-
* Read configuration from XDG storage
|
|
95
|
-
*
|
|
96
|
-
* @param options - Read options
|
|
97
|
-
* @returns Configuration data
|
|
98
|
-
*/
|
|
99
|
-
static read(options = {}) {
|
|
100
|
-
const args = ["read"];
|
|
101
|
-
if (options.profile) {
|
|
102
|
-
args.push("--profile", options.profile);
|
|
103
|
-
}
|
|
104
|
-
if (options.type) {
|
|
105
|
-
args.push("--type", options.type);
|
|
106
|
-
}
|
|
107
|
-
if (options.validate) {
|
|
108
|
-
args.push("--validate");
|
|
109
|
-
}
|
|
110
|
-
args.push("--compact"); // Always use compact for parsing
|
|
111
|
-
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
112
|
-
return JSON.parse(output);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Write configuration to XDG storage
|
|
116
|
-
*
|
|
117
|
-
* @param data - Configuration data to write
|
|
118
|
-
* @param options - Write options
|
|
119
|
-
*/
|
|
120
|
-
static write(data, options = {}) {
|
|
121
|
-
const args = ["write", JSON.stringify(data)];
|
|
122
|
-
if (options.profile) {
|
|
123
|
-
args.push("--profile", options.profile);
|
|
124
|
-
}
|
|
125
|
-
if (options.type) {
|
|
126
|
-
args.push("--type", options.type);
|
|
127
|
-
}
|
|
128
|
-
if (options.validate !== false) {
|
|
129
|
-
args.push("--validate");
|
|
130
|
-
}
|
|
131
|
-
if (options.backup !== false) {
|
|
132
|
-
args.push("--backup");
|
|
133
|
-
}
|
|
134
|
-
executeCLI(args, { verbose: options.verbose });
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Merge data into existing configuration
|
|
138
|
-
*
|
|
139
|
-
* @param data - Data to merge
|
|
140
|
-
* @param options - Merge options
|
|
141
|
-
*/
|
|
142
|
-
static merge(data, options = {}) {
|
|
143
|
-
const args = ["merge", JSON.stringify(data)];
|
|
144
|
-
if (options.profile) {
|
|
145
|
-
args.push("--profile", options.profile);
|
|
146
|
-
}
|
|
147
|
-
if (options.type) {
|
|
148
|
-
args.push("--type", options.type);
|
|
149
|
-
}
|
|
150
|
-
if (options.validate !== false) {
|
|
151
|
-
args.push("--validate");
|
|
152
|
-
}
|
|
153
|
-
if (options.backup !== false) {
|
|
154
|
-
args.push("--backup");
|
|
155
|
-
}
|
|
156
|
-
executeCLI(args, { verbose: options.verbose });
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Validate configuration against schema
|
|
160
|
-
*
|
|
161
|
-
* @param options - Validation options
|
|
162
|
-
* @returns True if valid, false otherwise
|
|
163
|
-
*/
|
|
164
|
-
static validate(options = {}) {
|
|
165
|
-
const args = ["validate"];
|
|
166
|
-
if (options.profile) {
|
|
167
|
-
args.push("--profile", options.profile);
|
|
168
|
-
}
|
|
169
|
-
if (options.type) {
|
|
170
|
-
args.push("--type", options.type);
|
|
171
|
-
}
|
|
172
|
-
try {
|
|
173
|
-
executeCLI(args, { verbose: options.verbose });
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
if (error instanceof XDGCLIError) {
|
|
178
|
-
return false;
|
|
179
|
-
}
|
|
180
|
-
throw error;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* List all available profiles
|
|
185
|
-
*
|
|
186
|
-
* @returns Array of profile names
|
|
187
|
-
*/
|
|
188
|
-
static listProfiles() {
|
|
189
|
-
const output = executeCLI(["list"], { captureStdout: true });
|
|
190
|
-
// Parse output: "Available profiles:\n default\n dev\n..."
|
|
191
|
-
const lines = output.split("\n").filter((line) => line.trim() && !line.includes("Available profiles"));
|
|
192
|
-
return lines.map((line) => line.trim().split(/\s+/)[0]);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Export configuration as JSON
|
|
196
|
-
*
|
|
197
|
-
* @param options - Export options
|
|
198
|
-
* @returns Configuration data
|
|
199
|
-
*/
|
|
200
|
-
static export(options = {}) {
|
|
201
|
-
const args = ["export"];
|
|
202
|
-
if (options.profile) {
|
|
203
|
-
args.push("--profile", options.profile);
|
|
204
|
-
}
|
|
205
|
-
if (options.type) {
|
|
206
|
-
args.push("--type", options.type);
|
|
207
|
-
}
|
|
208
|
-
args.push("--compact");
|
|
209
|
-
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
210
|
-
return JSON.parse(output);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Get a specific configuration field value
|
|
214
|
-
*
|
|
215
|
-
* @param key - Field key (supports dot notation)
|
|
216
|
-
* @param options - Get options
|
|
217
|
-
* @returns Field value
|
|
218
|
-
*/
|
|
219
|
-
static get(key, options = {}) {
|
|
220
|
-
const args = ["get", key];
|
|
221
|
-
if (options.profile) {
|
|
222
|
-
args.push("--profile", options.profile);
|
|
223
|
-
}
|
|
224
|
-
if (options.type) {
|
|
225
|
-
args.push("--type", options.type);
|
|
226
|
-
}
|
|
227
|
-
if (options.default) {
|
|
228
|
-
args.push("--default", options.default);
|
|
229
|
-
}
|
|
230
|
-
const output = executeCLI(args, { captureStdout: true, verbose: options.verbose });
|
|
231
|
-
// Try to parse as JSON, otherwise return as string
|
|
232
|
-
try {
|
|
233
|
-
return JSON.parse(output.trim());
|
|
234
|
-
}
|
|
235
|
-
catch {
|
|
236
|
-
return output.trim();
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Set a specific configuration field value
|
|
241
|
-
*
|
|
242
|
-
* @param key - Field key (supports dot notation)
|
|
243
|
-
* @param value - Value to set
|
|
244
|
-
* @param options - Set options
|
|
245
|
-
*/
|
|
246
|
-
static set(key, value, options = {}) {
|
|
247
|
-
const isObject = typeof value === "object";
|
|
248
|
-
const args = ["set", key, isObject ? JSON.stringify(value) : String(value)];
|
|
249
|
-
if (options.profile) {
|
|
250
|
-
args.push("--profile", options.profile);
|
|
251
|
-
}
|
|
252
|
-
if (options.type) {
|
|
253
|
-
args.push("--type", options.type);
|
|
254
|
-
}
|
|
255
|
-
if (isObject) {
|
|
256
|
-
args.push("--json");
|
|
257
|
-
}
|
|
258
|
-
if (options.backup !== false) {
|
|
259
|
-
args.push("--backup");
|
|
260
|
-
}
|
|
261
|
-
executeCLI(args, { verbose: options.verbose });
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Read user configuration
|
|
265
|
-
*/
|
|
266
|
-
static readUser(profile = "default") {
|
|
267
|
-
return this.read({ profile, type: "user" });
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Read derived configuration
|
|
271
|
-
*/
|
|
272
|
-
static readDerived(profile = "default") {
|
|
273
|
-
return this.read({ profile, type: "derived" });
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Read deployment configuration
|
|
277
|
-
*/
|
|
278
|
-
static readDeploy(profile = "default") {
|
|
279
|
-
return this.read({ profile, type: "deploy" });
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Read complete merged configuration
|
|
283
|
-
*/
|
|
284
|
-
static readComplete(profile = "default") {
|
|
285
|
-
return this.export({ profile, type: "complete" });
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
exports.XDGCLIWrapper = XDGCLIWrapper;
|
|
289
|
-
//# sourceMappingURL=xdg-cli-wrapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xdg-cli-wrapper.js","sourceRoot":"","sources":["../../lib/xdg-cli-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
/**
|
|
3
|
-
* Quilt Catalog Auto-Inference (v0.7.0)
|
|
4
|
-
*
|
|
5
|
-
* Automatically infers Quilt catalog configuration from:
|
|
6
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
7
|
-
* 2. AWS CloudFormation stack inspection
|
|
8
|
-
* 3. Interactive catalog selection (if multiple catalogs available)
|
|
9
|
-
*
|
|
10
|
-
* Returns configuration in v0.7.0 ProfileConfig format.
|
|
11
|
-
*
|
|
12
|
-
* @module scripts/infer-quilt-config
|
|
13
|
-
*/
|
|
14
|
-
import { QuiltConfig } from "../lib/types/config";
|
|
15
|
-
/**
|
|
16
|
-
* Inference options
|
|
17
|
-
*/
|
|
18
|
-
export interface InferenceOptions {
|
|
19
|
-
region?: string;
|
|
20
|
-
profile?: string;
|
|
21
|
-
interactive?: boolean;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Infers Quilt configuration from multiple sources
|
|
25
|
-
*
|
|
26
|
-
* Priority order:
|
|
27
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
28
|
-
* 2. CloudFormation stack inspection
|
|
29
|
-
* 3. Interactive selection if multiple options
|
|
30
|
-
*
|
|
31
|
-
* Returns configuration in v0.7.0 ProfileConfig.quilt format.
|
|
32
|
-
*
|
|
33
|
-
* @param options - Inference options
|
|
34
|
-
* @returns Quilt configuration object
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const quiltConfig = await inferQuiltConfig({
|
|
39
|
-
* region: "us-east-1",
|
|
40
|
-
* profile: "default",
|
|
41
|
-
* interactive: true
|
|
42
|
-
* });
|
|
43
|
-
* console.log(quiltConfig.stackArn);
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
export declare function inferQuiltConfig(options?: InferenceOptions): Promise<Partial<QuiltConfig>>;
|
|
47
|
-
//# sourceMappingURL=infer-quilt-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infer-quilt-config.d.ts","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAsBlD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AA8ID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAkFpG"}
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* Quilt Catalog Auto-Inference (v0.7.0)
|
|
5
|
-
*
|
|
6
|
-
* Automatically infers Quilt catalog configuration from:
|
|
7
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
8
|
-
* 2. AWS CloudFormation stack inspection
|
|
9
|
-
* 3. Interactive catalog selection (if multiple catalogs available)
|
|
10
|
-
*
|
|
11
|
-
* Returns configuration in v0.7.0 ProfileConfig format.
|
|
12
|
-
*
|
|
13
|
-
* @module scripts/infer-quilt-config
|
|
14
|
-
*/
|
|
15
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
-
}
|
|
21
|
-
Object.defineProperty(o, k2, desc);
|
|
22
|
-
}) : (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
o[k2] = m[k];
|
|
25
|
-
}));
|
|
26
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
-
}) : function(o, v) {
|
|
29
|
-
o["default"] = v;
|
|
30
|
-
});
|
|
31
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
-
var ownKeys = function(o) {
|
|
33
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
-
var ar = [];
|
|
35
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
-
return ar;
|
|
37
|
-
};
|
|
38
|
-
return ownKeys(o);
|
|
39
|
-
};
|
|
40
|
-
return function (mod) {
|
|
41
|
-
if (mod && mod.__esModule) return mod;
|
|
42
|
-
var result = {};
|
|
43
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
-
__setModuleDefault(result, mod);
|
|
45
|
-
return result;
|
|
46
|
-
};
|
|
47
|
-
})();
|
|
48
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.inferQuiltConfig = inferQuiltConfig;
|
|
50
|
-
const child_process_1 = require("child_process");
|
|
51
|
-
const readline = __importStar(require("readline"));
|
|
52
|
-
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
53
|
-
/**
|
|
54
|
-
* Executes quilt3 config command to get current catalog URL
|
|
55
|
-
*
|
|
56
|
-
* @returns Catalog URL from quilt3 CLI or null if command fails
|
|
57
|
-
*/
|
|
58
|
-
function getQuilt3Catalog() {
|
|
59
|
-
try {
|
|
60
|
-
const output = (0, child_process_1.execSync)("quilt3 config", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
|
|
61
|
-
let catalogUrl = output.trim();
|
|
62
|
-
if (catalogUrl && catalogUrl.startsWith("http")) {
|
|
63
|
-
console.log(`Found quilt3 CLI configuration: ${catalogUrl}`);
|
|
64
|
-
// Strip protocol and trailing slash, store only domain
|
|
65
|
-
catalogUrl = catalogUrl.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
66
|
-
return { catalogUrl };
|
|
67
|
-
}
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// quilt3 command not available or failed
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Finds Quilt CloudFormation stacks in AWS account
|
|
77
|
-
*
|
|
78
|
-
* @param region - AWS region to search
|
|
79
|
-
* @param profile - AWS profile to use
|
|
80
|
-
* @returns Array of Quilt stack information
|
|
81
|
-
*/
|
|
82
|
-
async function findQuiltStacks(region, profile) {
|
|
83
|
-
try {
|
|
84
|
-
const clientConfig = { region };
|
|
85
|
-
if (profile) {
|
|
86
|
-
const { fromIni } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
|
|
87
|
-
clientConfig.credentials = fromIni({ profile });
|
|
88
|
-
}
|
|
89
|
-
const client = new client_cloudformation_1.CloudFormationClient(clientConfig);
|
|
90
|
-
// List all stacks
|
|
91
|
-
const listCommand = new client_cloudformation_1.ListStacksCommand({
|
|
92
|
-
StackStatusFilter: ["CREATE_COMPLETE", "UPDATE_COMPLETE"],
|
|
93
|
-
});
|
|
94
|
-
const listResponse = await client.send(listCommand);
|
|
95
|
-
const stacks = listResponse.StackSummaries || [];
|
|
96
|
-
// Filter for Quilt stacks (containing "quilt" in the name)
|
|
97
|
-
const quiltStacks = stacks.filter((stack) => stack.StackName?.toLowerCase().includes("quilt") ||
|
|
98
|
-
stack.StackName?.toLowerCase().includes("catalog"));
|
|
99
|
-
// Get detailed information for each stack
|
|
100
|
-
const stackInfos = [];
|
|
101
|
-
for (const stack of quiltStacks) {
|
|
102
|
-
if (!stack.StackName)
|
|
103
|
-
continue;
|
|
104
|
-
try {
|
|
105
|
-
const describeCommand = new client_cloudformation_1.DescribeStacksCommand({
|
|
106
|
-
StackName: stack.StackName,
|
|
107
|
-
});
|
|
108
|
-
const describeResponse = await client.send(describeCommand);
|
|
109
|
-
const stackDetail = describeResponse.Stacks?.[0];
|
|
110
|
-
if (!stackDetail)
|
|
111
|
-
continue;
|
|
112
|
-
const outputs = stackDetail.Outputs || [];
|
|
113
|
-
const stackInfo = {
|
|
114
|
-
stackName: stack.StackName,
|
|
115
|
-
stackArn: stackDetail.StackId || "",
|
|
116
|
-
region: region,
|
|
117
|
-
};
|
|
118
|
-
// Extract outputs
|
|
119
|
-
for (const output of outputs) {
|
|
120
|
-
const key = output.OutputKey || "";
|
|
121
|
-
const value = output.OutputValue || "";
|
|
122
|
-
if (key === "QuiltWebHost") {
|
|
123
|
-
// Strip protocol and trailing slash, store only domain
|
|
124
|
-
stackInfo.catalogUrl = value.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
125
|
-
}
|
|
126
|
-
else if (key.includes("ucket")) {
|
|
127
|
-
stackInfo.bucket = value;
|
|
128
|
-
}
|
|
129
|
-
else if (key === "UserAthenaDatabaseName" || key.includes("Database")) {
|
|
130
|
-
stackInfo.database = value;
|
|
131
|
-
}
|
|
132
|
-
else if (key.includes("Queue")) {
|
|
133
|
-
stackInfo.queueArn = value;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
stackInfos.push(stackInfo);
|
|
137
|
-
}
|
|
138
|
-
catch (describeError) {
|
|
139
|
-
console.error(`Warning: Failed to describe stack ${stack.StackName}: ${describeError.message}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return stackInfos;
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
console.error(`Warning: Failed to list CloudFormation stacks: ${error.message}`);
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Prompts user to select from multiple catalog options
|
|
151
|
-
*
|
|
152
|
-
* @param options - Array of catalog options
|
|
153
|
-
* @returns Selected catalog index
|
|
154
|
-
*/
|
|
155
|
-
async function promptCatalogSelection(options) {
|
|
156
|
-
console.log("\nMultiple Quilt catalog configurations found:");
|
|
157
|
-
options.forEach((opt, idx) => {
|
|
158
|
-
console.log(` ${idx + 1}. ${opt}`);
|
|
159
|
-
});
|
|
160
|
-
const rl = readline.createInterface({
|
|
161
|
-
input: process.stdin,
|
|
162
|
-
output: process.stdout,
|
|
163
|
-
});
|
|
164
|
-
return new Promise((resolve) => {
|
|
165
|
-
rl.question(`\nSelect catalog (1-${options.length}): `, (answer) => {
|
|
166
|
-
rl.close();
|
|
167
|
-
const selection = parseInt(answer.trim(), 10);
|
|
168
|
-
if (isNaN(selection) || selection < 1 || selection > options.length) {
|
|
169
|
-
console.log("Invalid selection, using first option.");
|
|
170
|
-
resolve(0);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
resolve(selection - 1);
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Infers Quilt configuration from multiple sources
|
|
180
|
-
*
|
|
181
|
-
* Priority order:
|
|
182
|
-
* 1. quilt3 CLI command (`quilt3 config`)
|
|
183
|
-
* 2. CloudFormation stack inspection
|
|
184
|
-
* 3. Interactive selection if multiple options
|
|
185
|
-
*
|
|
186
|
-
* Returns configuration in v0.7.0 ProfileConfig.quilt format.
|
|
187
|
-
*
|
|
188
|
-
* @param options - Inference options
|
|
189
|
-
* @returns Quilt configuration object
|
|
190
|
-
*
|
|
191
|
-
* @example
|
|
192
|
-
* ```typescript
|
|
193
|
-
* const quiltConfig = await inferQuiltConfig({
|
|
194
|
-
* region: "us-east-1",
|
|
195
|
-
* profile: "default",
|
|
196
|
-
* interactive: true
|
|
197
|
-
* });
|
|
198
|
-
* console.log(quiltConfig.stackArn);
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
async function inferQuiltConfig(options = {}) {
|
|
202
|
-
const { region = "us-east-1", profile, interactive = true } = options;
|
|
203
|
-
const result = {
|
|
204
|
-
region,
|
|
205
|
-
};
|
|
206
|
-
// Step 1: Try quilt3 CLI command
|
|
207
|
-
console.log("Checking quilt3 CLI configuration...");
|
|
208
|
-
const quilt3Config = getQuilt3Catalog();
|
|
209
|
-
if (quilt3Config?.catalogUrl) {
|
|
210
|
-
result.catalog = quilt3Config.catalogUrl;
|
|
211
|
-
console.log(` ✓ Found catalog URL from quilt3: ${result.catalog}`);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
console.log(" No quilt3 CLI configuration found.");
|
|
215
|
-
}
|
|
216
|
-
// Step 2: Search for CloudFormation stacks
|
|
217
|
-
console.log("\nSearching for Quilt CloudFormation stacks...");
|
|
218
|
-
const stacks = await findQuiltStacks(region, profile);
|
|
219
|
-
if (stacks.length === 0) {
|
|
220
|
-
console.log(" No Quilt CloudFormation stacks found.");
|
|
221
|
-
if (!result.catalog) {
|
|
222
|
-
throw new Error("Unable to infer Quilt configuration. Please run 'quilt3 config <catalog-url>' or provide stack ARN manually.");
|
|
223
|
-
}
|
|
224
|
-
return result;
|
|
225
|
-
}
|
|
226
|
-
console.log(` Found ${stacks.length} Quilt stack(s)\n`);
|
|
227
|
-
let selectedStack;
|
|
228
|
-
// If we have a catalog URL from quilt3, try to find matching stack
|
|
229
|
-
if (result.catalog && stacks.length > 1) {
|
|
230
|
-
// Both result.catalog and stack catalogUrl are now bare domains, so compare directly
|
|
231
|
-
const matchingStack = stacks.find((s) => s.catalogUrl === result.catalog);
|
|
232
|
-
if (matchingStack) {
|
|
233
|
-
selectedStack = matchingStack;
|
|
234
|
-
console.log(` Auto-selected stack matching catalog URL: ${selectedStack.stackName}`);
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
console.log(` No stack found matching catalog URL: ${result.catalog}`);
|
|
238
|
-
if (interactive) {
|
|
239
|
-
const options = stacks.map((s) => `${s.stackName} (${s.region})`);
|
|
240
|
-
const selectedIndex = await promptCatalogSelection(options);
|
|
241
|
-
selectedStack = stacks[selectedIndex];
|
|
242
|
-
console.log(`\nSelected: ${selectedStack.stackName}`);
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
selectedStack = stacks[0];
|
|
246
|
-
console.log(` Using first stack: ${selectedStack.stackName}`);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
else if (stacks.length === 1) {
|
|
251
|
-
selectedStack = stacks[0];
|
|
252
|
-
console.log(` Using stack: ${selectedStack.stackName}`);
|
|
253
|
-
}
|
|
254
|
-
else if (interactive) {
|
|
255
|
-
const options = stacks.map((s) => `${s.stackName} (${s.region})`);
|
|
256
|
-
const selectedIndex = await promptCatalogSelection(options);
|
|
257
|
-
selectedStack = stacks[selectedIndex];
|
|
258
|
-
console.log(`\nSelected: ${selectedStack.stackName}`);
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
selectedStack = stacks[0];
|
|
262
|
-
console.log(` Using first stack: ${selectedStack.stackName}`);
|
|
263
|
-
}
|
|
264
|
-
// Populate result from selected stack
|
|
265
|
-
result.stackArn = selectedStack.stackArn;
|
|
266
|
-
result.bucket = selectedStack.bucket;
|
|
267
|
-
result.database = selectedStack.database || "quilt_catalog";
|
|
268
|
-
result.queueArn = selectedStack.queueArn;
|
|
269
|
-
result.region = selectedStack.region;
|
|
270
|
-
if (selectedStack.catalogUrl) {
|
|
271
|
-
result.catalog = selectedStack.catalogUrl;
|
|
272
|
-
}
|
|
273
|
-
console.log("\n✓ Quilt configuration inferred successfully\n");
|
|
274
|
-
return result;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Main execution for CLI usage
|
|
278
|
-
*/
|
|
279
|
-
async function main() {
|
|
280
|
-
const args = process.argv.slice(2);
|
|
281
|
-
const options = {
|
|
282
|
-
interactive: true,
|
|
283
|
-
};
|
|
284
|
-
// Parse command line arguments
|
|
285
|
-
for (let i = 0; i < args.length; i++) {
|
|
286
|
-
if (args[i] === "--region" && i + 1 < args.length) {
|
|
287
|
-
options.region = args[i + 1];
|
|
288
|
-
i++;
|
|
289
|
-
}
|
|
290
|
-
else if (args[i] === "--profile" && i + 1 < args.length) {
|
|
291
|
-
options.profile = args[i + 1];
|
|
292
|
-
i++;
|
|
293
|
-
}
|
|
294
|
-
else if (args[i] === "--non-interactive") {
|
|
295
|
-
options.interactive = false;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
console.log("Quilt Catalog Auto-Inference (v0.7.0)\n");
|
|
299
|
-
const result = await inferQuiltConfig(options);
|
|
300
|
-
console.log("=== Inference Results ===");
|
|
301
|
-
console.log(`Stack ARN: ${result.stackArn || "Not found"}`);
|
|
302
|
-
console.log(`Catalog URL: ${result.catalog || "Not found"}`);
|
|
303
|
-
console.log(`Bucket: ${result.bucket || "Not found"}`);
|
|
304
|
-
console.log(`Database: ${result.database || "Not found"}`);
|
|
305
|
-
console.log(`Queue ARN: ${result.queueArn || "Not found"}`);
|
|
306
|
-
console.log(`Region: ${result.region || "Not found"}`);
|
|
307
|
-
}
|
|
308
|
-
// Run main if executed directly
|
|
309
|
-
if (require.main === module) {
|
|
310
|
-
main().catch((error) => {
|
|
311
|
-
console.error("Error:", error.message);
|
|
312
|
-
process.exit(1);
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
//# sourceMappingURL=infer-quilt-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infer-quilt-config.js","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":"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"}
|