geni-bioinfo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +8 -0
- package/dist/auth.js +76 -0
- package/dist/aws/clients.d.ts +18 -0
- package/dist/aws/clients.js +34 -0
- package/dist/commands/activate.d.ts +2 -0
- package/dist/commands/activate.js +20 -0
- package/dist/commands/activity-log.d.ts +2 -0
- package/dist/commands/activity-log.js +31 -0
- package/dist/commands/api-token.d.ts +2 -0
- package/dist/commands/api-token.js +96 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.js +55 -0
- package/dist/commands/engine.d.ts +2 -0
- package/dist/commands/engine.js +83 -0
- package/dist/commands/environment.d.ts +2 -0
- package/dist/commands/environment.js +69 -0
- package/dist/commands/image.d.ts +2 -0
- package/dist/commands/image.js +40 -0
- package/dist/commands/instance.d.ts +2 -0
- package/dist/commands/instance.js +39 -0
- package/dist/commands/log.d.ts +3 -0
- package/dist/commands/log.js +43 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.js +24 -0
- package/dist/commands/plugin.d.ts +2 -0
- package/dist/commands/plugin.js +80 -0
- package/dist/commands/queue.d.ts +2 -0
- package/dist/commands/queue.js +74 -0
- package/dist/commands/registry.d.ts +2 -0
- package/dist/commands/registry.js +72 -0
- package/dist/commands/setup/create.d.ts +2 -0
- package/dist/commands/setup/create.js +254 -0
- package/dist/commands/setup/delete.d.ts +2 -0
- package/dist/commands/setup/delete.js +97 -0
- package/dist/commands/setup/status.d.ts +2 -0
- package/dist/commands/setup/status.js +46 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.js +13 -0
- package/dist/commands/storage.d.ts +2 -0
- package/dist/commands/storage.js +67 -0
- package/dist/commands/submission.d.ts +2 -0
- package/dist/commands/submission.js +87 -0
- package/dist/commands/task.d.ts +2 -0
- package/dist/commands/task.js +21 -0
- package/dist/commands/tenant.d.ts +2 -0
- package/dist/commands/tenant.js +68 -0
- package/dist/commands/user.d.ts +2 -0
- package/dist/commands/user.js +82 -0
- package/dist/commands/workflow.d.ts +2 -0
- package/dist/commands/workflow.js +80 -0
- package/dist/errors.d.ts +38 -0
- package/dist/errors.js +194 -0
- package/dist/format.d.ts +22 -0
- package/dist/format.js +155 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +91 -0
- package/dist/templates/setup.yaml +503 -0
- package/package.json +49 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.environmentCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const format_js_1 = require("../format.js");
|
|
7
|
+
exports.environmentCommand = new commander_1.Command('environment')
|
|
8
|
+
.description('Manage environments');
|
|
9
|
+
exports.environmentCommand
|
|
10
|
+
.command('list')
|
|
11
|
+
.description('List environments')
|
|
12
|
+
.option('--status <status>', 'Filter by status (e.g. ACTIVE, PENDING, FAILED, DELETED)')
|
|
13
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
if (opts.status)
|
|
17
|
+
params.set('status', opts.status);
|
|
18
|
+
if (process.env.GENI_TENANT_ID)
|
|
19
|
+
params.set('tenantId', process.env.GENI_TENANT_ID);
|
|
20
|
+
const query = params.size ? `?${params}` : '';
|
|
21
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/environments${query}`));
|
|
22
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.environmentColumns);
|
|
23
|
+
});
|
|
24
|
+
exports.environmentCommand
|
|
25
|
+
.command('get <id>')
|
|
26
|
+
.description('Get an environment by ID')
|
|
27
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
28
|
+
.action(async (id, opts) => {
|
|
29
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
30
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/environments/${id}${query}`));
|
|
31
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.environmentColumns);
|
|
32
|
+
});
|
|
33
|
+
exports.environmentCommand
|
|
34
|
+
.command('delete <id>')
|
|
35
|
+
.description('Delete an environment')
|
|
36
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
37
|
+
.action(async (id, opts) => {
|
|
38
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
39
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/environments/${id}${query}`), {
|
|
40
|
+
method: 'DELETE',
|
|
41
|
+
});
|
|
42
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.environmentColumns);
|
|
43
|
+
});
|
|
44
|
+
exports.environmentCommand
|
|
45
|
+
.command('create')
|
|
46
|
+
.description('Create an environment')
|
|
47
|
+
.requiredOption('--name <name>', 'Environment name')
|
|
48
|
+
.requiredOption('--cloud-id <cloudId>', 'Cloud account ID')
|
|
49
|
+
.requiredOption('--cloud-region <cloudRegion>', 'Cloud region')
|
|
50
|
+
.option('--identity-to-assume <identityToAssume>', 'Cross-account identity ARN (default: created by geni-setup)')
|
|
51
|
+
.option('--availability-zones <n>', 'Number of private subnets', '2')
|
|
52
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
53
|
+
.action(async (opts) => {
|
|
54
|
+
const identityToAssume = opts.identityToAssume ?? `arn:aws:iam::${opts.cloudId}:role/GeniCrossAccountRole`;
|
|
55
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)('/admin/environments'), {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: { 'Content-Type': 'application/json' },
|
|
58
|
+
body: JSON.stringify({
|
|
59
|
+
name: opts.name,
|
|
60
|
+
cloudId: opts.cloudId,
|
|
61
|
+
cloudRegion: opts.cloudRegion,
|
|
62
|
+
identityToAssume,
|
|
63
|
+
availabilityZones: parseInt(opts.availabilityZones, 10),
|
|
64
|
+
...(process.env.GENI_TENANT_ID ? { tenantId: process.env.GENI_TENANT_ID } : {}),
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.environmentColumns);
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FBa0Y7QUFFckUsUUFBQSxrQkFBa0IsR0FBRyxJQUFJLG1CQUFPLENBQUMsYUFBYSxDQUFDO0tBQ3pELFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBRXJDLDBCQUFrQjtLQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsbUJBQW1CLENBQUM7S0FDaEMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDBEQUEwRCxDQUFDO0tBQ3ZGLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQStDLEVBQUUsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO0lBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWM7UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2xGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJ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LEVBQUUsSUFPZCxFQUFFLEVBQUU7SUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sNEJBQTRCLENBQUE7SUFDMUcsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLGdCQUFTLEVBQUMsSUFBQSxhQUFNLEVBQUMscUJBQXFCLENBQUMsRUFBRTtRQUMxRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtRQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGdCQUFnQjtZQUNoQixpQkFBaUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUN2RCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRixDQUFDO0tBQ0gsQ0FBQyxDQUFBO0lBQ0YsSUFBQSx3QkFBWSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLDhCQUFrQixDQUFDLENBQUE7QUFDckQsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInXG5pbXBvcnQgeyBhcGlVcmwsIGZldGNoSnNvbiB9IGZyb20gJy4uL2F1dGgnXG5pbXBvcnQgeyBmb3JtYXRPdXRwdXQsIGVudmlyb25tZW50Q29sdW1ucywgdHlwZSBPdXRwdXRGb3JtYXQgfSBmcm9tICcuLi9mb3JtYXQuanMnXG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudENvbW1hbmQgPSBuZXcgQ29tbWFuZCgnZW52aXJvbm1lbnQnKVxuICAuZGVzY3JpcHRpb24oJ01hbmFnZSBlbnZpcm9ubWVudHMnKVxuXG5lbnZpcm9ubWVudENvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgZW52aXJvbm1lbnRzJylcbiAgLm9wdGlvbignLS1zdGF0dXMgPHN0YXR1cz4nLCAnRmlsdGVyIGJ5IHN0YXR1cyAoZS5nLiBBQ1RJVkUsIFBFTkRJTkcsIEZBSUxFRCwgREVMRVRFRCknKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBzdGF0dXM/OiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdHMuc3RhdHVzKVxuICAgIGlmIChwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCkgcGFyYW1zLnNldCgndGVuYW50SWQnLCBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRClcbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy5zaXplID8gYD8ke3BhcmFtc31gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL2Vudmlyb25tZW50cyR7cXVlcnl9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gICAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGVudmlyb25tZW50Q29sdW1ucylcbiAgfSlcblxuZW52aXJvbm1lbnRDb21tYW5kXG4gIC5jb21tYW5kKCdnZXQgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignR2V0IGFuIGVudmlyb25tZW50IGJ5IElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcsIG9wdHM6IHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyBgP3RlbmFudElkPSR7cHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUR9YCA6ICcnXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9hZG1pbi9lbnZpcm9ubWVudHMvJHtpZH0ke3F1ZXJ5fWApKVxuICAgIGZvcm1hdE91dHB1dChkYXRhLCBvcHRzLmZvcm1hdCwgZW52aXJvbm1lbnRDb2x1bW5zKVxuICB9KVxuXG5lbnZpcm9ubWVudENvbW1hbmRcbiAgLmNvbW1hbmQoJ2RlbGV0ZSA8aWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdEZWxldGUgYW4gZW52aXJvbm1lbnQnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaWQ6IHN0cmluZywgb3B0czogeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCA/IGA/dGVuYW50SWQ9JHtwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRH1gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL2Vudmlyb25tZW50cy8ke2lkfSR7cXVlcnl9YCksIHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIGVudmlyb25tZW50Q29sdW1ucylcbiAgfSlcblxuZW52aXJvbm1lbnRDb21tYW5kXG4gIC5jb21tYW5kKCdjcmVhdGUnKVxuICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhbiBlbnZpcm9ubWVudCcpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdFbnZpcm9ubWVudCBuYW1lJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLWNsb3VkLWlkIDxjbG91ZElkPicsICdDbG91ZCBhY2NvdW50IElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLWNsb3VkLXJlZ2lvbiA8Y2xvdWRSZWdpb24+JywgJ0Nsb3VkIHJlZ2lvbicpXG4gIC5vcHRpb24oJy0taWRlbnRpdHktdG8tYXNzdW1lIDxpZGVudGl0eVRvQXNzdW1lPicsICdDcm9zcy1hY2NvdW50IGlkZW50aXR5IEFSTiAoZGVmYXVsdDogY3JlYXRlZCBieSBnZW5pLXNldHVwKScpXG4gIC5vcHRpb24oJy0tYXZhaWxhYmlsaXR5LXpvbmVzIDxuPicsICdOdW1iZXIgb2YgcHJpdmF0ZSBzdWJuZXRzJywgJzInKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGNsb3VkSWQ6IHN0cmluZ1xuICAgIGNsb3VkUmVnaW9uOiBzdHJpbmdcbiAgICBpZGVudGl0eVRvQXNzdW1lPzogc3RyaW5nXG4gICAgYXZhaWxhYmlsaXR5Wm9uZXM6IHN0cmluZ1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0XG4gIH0pID0+IHtcbiAgICBjb25zdCBpZGVudGl0eVRvQXNzdW1lID0gb3B0cy5pZGVudGl0eVRvQXNzdW1lID8/IGBhcm46YXdzOmlhbTo6JHtvcHRzLmNsb3VkSWR9OnJvbGUvR2VuaUNyb3NzQWNjb3VudFJvbGVgXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoJy9hZG1pbi9lbnZpcm9ubWVudHMnKSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogb3B0cy5uYW1lLFxuICAgICAgICBjbG91ZElkOiBvcHRzLmNsb3VkSWQsXG4gICAgICAgIGNsb3VkUmVnaW9uOiBvcHRzLmNsb3VkUmVnaW9uLFxuICAgICAgICBpZGVudGl0eVRvQXNzdW1lLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lczogcGFyc2VJbnQob3B0cy5hdmFpbGFiaWxpdHlab25lcywgMTApLFxuICAgICAgICAuLi4ocHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyB7IHRlbmFudElkOiBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCB9IDoge30pLFxuICAgICAgfSksXG4gICAgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIGVudmlyb25tZW50Q29sdW1ucylcbiAgfSlcbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.imageCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const format_js_1 = require("../format.js");
|
|
7
|
+
exports.imageCommand = new commander_1.Command('image')
|
|
8
|
+
.description('Manage images');
|
|
9
|
+
exports.imageCommand
|
|
10
|
+
.command('list')
|
|
11
|
+
.description('List images in a registry')
|
|
12
|
+
.requiredOption('--registry-id <id>', 'Registry ID')
|
|
13
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${opts.registryId}/images`));
|
|
16
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.imageColumns);
|
|
17
|
+
});
|
|
18
|
+
exports.imageCommand
|
|
19
|
+
.command('get <imageId>')
|
|
20
|
+
.description('Get an image by ID')
|
|
21
|
+
.requiredOption('--registry-id <id>', 'Registry ID')
|
|
22
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
23
|
+
.action(async (imageId, opts) => {
|
|
24
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${opts.registryId}/images/${imageId}`));
|
|
25
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.imageColumns);
|
|
26
|
+
});
|
|
27
|
+
exports.imageCommand
|
|
28
|
+
.command('uri')
|
|
29
|
+
.description('Print the image URI for a registry and tag')
|
|
30
|
+
.requiredOption('--registry-id <id>', 'Registry ID')
|
|
31
|
+
.requiredOption('--tag <tag>', 'Image tag')
|
|
32
|
+
.action(async (opts) => {
|
|
33
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${opts.registryId}`));
|
|
34
|
+
if (!data.repositoryUri) {
|
|
35
|
+
console.error('Registry has no repository URI');
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
console.log(`${data.repositoryUri}:${opts.tag}`);
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FBNEU7QUFFL0QsUUFBQSxZQUFZLEdBQUcsSUFBSSxtQkFBTyxDQUFDLE9BQU8sQ0FBQztLQUM3QyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7QUFFL0Isb0JBQVk7S0FDVCxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLDJCQUEyQixDQUFDO0tBQ3hDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUM7S0FDbkQsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzlHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBa0QsRUFBRSxFQUFFO0lBQ25FLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLHFCQUFxQixJQUFJLENBQUMsVUFBVSxTQUFTLENBQUMsQ0FBeUIsQ0FBQTtJQUMzRyxJQUFBLHdCQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLHdCQUFZLENBQUMsQ0FBQTtBQUNyRixDQUFDLENBQUMsQ0FBQTtBQUVKLG9CQUFZO0tBQ1QsT0FBTyxDQUFDLGVBQWUsQ0FBQztLQUN4QixXQUFXLENBQUMsb0JBQW9CLENBQUM7S0FDakMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQztLQUNuRCxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUcsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFlLEVBQUUsSUFBa0QsRUFBRSxFQUFFO0lBQ3BGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLHFCQUFxQixJQUFJLENBQUMsVUFBVSxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RixJQUFBLHdCQUFZLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsd0JBQVksQ0FBQyxDQUFBO0FBQy9DLENBQUMsQ0FBQyxDQUFBO0FBRUosb0JBQVk7S0FDVCxPQUFPLENBQUMsS0FBSyxDQUFDO0tBQ2QsV0FBVyxDQUFDLDRDQUE0QyxDQUFDO0tBQ3pELGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUM7S0FDbkQsY0FBYyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7S0FDMUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUF5QyxFQUFFLEVBQUU7SUFDMUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLGdCQUFTLEVBQUMsSUFBQSxhQUFNLEVBQUMscUJBQXFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUErQixDQUFBO0lBQzFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ2xELENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IHsgYXBpVXJsLCBmZXRjaEpzb24gfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgZm9ybWF0T3V0cHV0LCBpbWFnZUNvbHVtbnMsIHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vZm9ybWF0LmpzJ1xuXG5leHBvcnQgY29uc3QgaW1hZ2VDb21tYW5kID0gbmV3IENvbW1hbmQoJ2ltYWdlJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgaW1hZ2VzJylcblxuaW1hZ2VDb21tYW5kXG4gIC5jb21tYW5kKCdsaXN0JylcbiAgLmRlc2NyaXB0aW9uKCdMaXN0IGltYWdlcyBpbiBhIHJlZ2lzdHJ5JylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXJlZ2lzdHJ5LWlkIDxpZD4nLCAnUmVnaXN0cnkgSUQnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyByZWdpc3RyeUlkOiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3JlZ2lzdHJpZXMvJHtvcHRzLnJlZ2lzdHJ5SWR9L2ltYWdlc2ApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBpbWFnZUNvbHVtbnMpXG4gIH0pXG5cbmltYWdlQ29tbWFuZFxuICAuY29tbWFuZCgnZ2V0IDxpbWFnZUlkPicpXG4gIC5kZXNjcmlwdGlvbignR2V0IGFuIGltYWdlIGJ5IElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXJlZ2lzdHJ5LWlkIDxpZD4nLCAnUmVnaXN0cnkgSUQnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaW1hZ2VJZDogc3RyaW5nLCBvcHRzOiB7IHJlZ2lzdHJ5SWQ6IHN0cmluZzsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvYWRtaW4vcmVnaXN0cmllcy8ke29wdHMucmVnaXN0cnlJZH0vaW1hZ2VzLyR7aW1hZ2VJZH1gKSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIGltYWdlQ29sdW1ucylcbiAgfSlcblxuaW1hZ2VDb21tYW5kXG4gIC5jb21tYW5kKCd1cmknKVxuICAuZGVzY3JpcHRpb24oJ1ByaW50IHRoZSBpbWFnZSBVUkkgZm9yIGEgcmVnaXN0cnkgYW5kIHRhZycpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1yZWdpc3RyeS1pZCA8aWQ+JywgJ1JlZ2lzdHJ5IElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXRhZyA8dGFnPicsICdJbWFnZSB0YWcnKVxuICAuYWN0aW9uKGFzeW5jIChvcHRzOiB7IHJlZ2lzdHJ5SWQ6IHN0cmluZzsgdGFnOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvYWRtaW4vcmVnaXN0cmllcy8ke29wdHMucmVnaXN0cnlJZH1gKSkgYXMgeyByZXBvc2l0b3J5VXJpPzogc3RyaW5nIH1cbiAgICBpZiAoIWRhdGEucmVwb3NpdG9yeVVyaSkge1xuICAgICAgY29uc29sZS5lcnJvcignUmVnaXN0cnkgaGFzIG5vIHJlcG9zaXRvcnkgVVJJJylcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyhgJHtkYXRhLnJlcG9zaXRvcnlVcml9OiR7b3B0cy50YWd9YClcbiAgfSlcbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.instanceCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const format_js_1 = require("../format.js");
|
|
7
|
+
exports.instanceCommand = new commander_1.Command('instance')
|
|
8
|
+
.description('Manage instances');
|
|
9
|
+
exports.instanceCommand
|
|
10
|
+
.command('list')
|
|
11
|
+
.description('List instances')
|
|
12
|
+
.option('--environment-id <id>', 'Filter by environment ID')
|
|
13
|
+
.option('--queue-id <id>', 'Filter by queue ID')
|
|
14
|
+
.option('--submission-id <id>', 'Filter by submission ID')
|
|
15
|
+
.option('--status <status>', 'Filter by status (e.g. RUNNING, TERMINATED, COST_CALCULATED, ERROR)')
|
|
16
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
17
|
+
.action(async (opts) => {
|
|
18
|
+
const params = new URLSearchParams();
|
|
19
|
+
if (opts.environmentId)
|
|
20
|
+
params.set('environmentId', opts.environmentId);
|
|
21
|
+
if (opts.queueId)
|
|
22
|
+
params.set('queueId', opts.queueId);
|
|
23
|
+
if (opts.submissionId)
|
|
24
|
+
params.set('submissionId', opts.submissionId);
|
|
25
|
+
if (opts.status)
|
|
26
|
+
params.set('status', opts.status);
|
|
27
|
+
const query = params.toString() ? `?${params.toString()}` : '';
|
|
28
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/instances${query}`));
|
|
29
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.instanceColumns);
|
|
30
|
+
});
|
|
31
|
+
exports.instanceCommand
|
|
32
|
+
.command('get <id>')
|
|
33
|
+
.description('Get an instance by ID')
|
|
34
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
35
|
+
.action(async (id, opts) => {
|
|
36
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/instances/${id}`));
|
|
37
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.instanceColumns);
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FBK0U7QUFFbEUsUUFBQSxlQUFlLEdBQUcsSUFBSSxtQkFBTyxDQUFDLFVBQVUsQ0FBQztLQUNuRCxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtBQUVsQyx1QkFBZTtLQUNaLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsZ0JBQWdCLENBQUM7S0FDN0IsTUFBTSxDQUFDLHVCQUF1QixFQUFFLDBCQUEwQixDQUFDO0tBQzNELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQztLQUMvQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUseUJBQXlCLENBQUM7S0FDekQsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFFQUFxRSxDQUFDO0tBQ2xHLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBTWQsRUFBRSxFQUFFO0lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtJQUNwQyxJQUFJLElBQUksQ0FBQyxhQUFhO1FBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3ZFLElBQUksSUFBSSxDQUFDLE9BQU87UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckQsSUFBSSxJQUFJLENBQUMsWUFBWTtRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwRSxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzlELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLGFBQWEsS0FBSyxFQUFFLENBQUMsQ0FBeUIsQ0FBQTtJQUNsRixJQUFBLHdCQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLDJCQUFlLENBQUMsQ0FBQTtBQUN4RixDQUFDLENBQUMsQ0FBQTtBQUVKLHVCQUFlO0tBQ1osT0FBTyxDQUFDLFVBQVUsQ0FBQztLQUNuQixXQUFXLENBQUMsdUJBQXVCLENBQUM7S0FDcEMsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzlHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBVSxFQUFFLElBQThCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFBQU0sRUFBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RCxJQUFBLHdCQUFZLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsMkJBQWUsQ0FBQyxDQUFBO0FBQ2xELENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IHsgYXBpVXJsLCBmZXRjaEpzb24gfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgZm9ybWF0T3V0cHV0LCBpbnN0YW5jZUNvbHVtbnMsIHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vZm9ybWF0LmpzJ1xuXG5leHBvcnQgY29uc3QgaW5zdGFuY2VDb21tYW5kID0gbmV3IENvbW1hbmQoJ2luc3RhbmNlJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgaW5zdGFuY2VzJylcblxuaW5zdGFuY2VDb21tYW5kXG4gIC5jb21tYW5kKCdsaXN0JylcbiAgLmRlc2NyaXB0aW9uKCdMaXN0IGluc3RhbmNlcycpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQtaWQgPGlkPicsICdGaWx0ZXIgYnkgZW52aXJvbm1lbnQgSUQnKVxuICAub3B0aW9uKCctLXF1ZXVlLWlkIDxpZD4nLCAnRmlsdGVyIGJ5IHF1ZXVlIElEJylcbiAgLm9wdGlvbignLS1zdWJtaXNzaW9uLWlkIDxpZD4nLCAnRmlsdGVyIGJ5IHN1Ym1pc3Npb24gSUQnKVxuICAub3B0aW9uKCctLXN0YXR1cyA8c3RhdHVzPicsICdGaWx0ZXIgYnkgc3RhdHVzIChlLmcuIFJVTk5JTkcsIFRFUk1JTkFURUQsIENPU1RfQ0FMQ1VMQVRFRCwgRVJST1IpJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHtcbiAgICBlbnZpcm9ubWVudElkPzogc3RyaW5nXG4gICAgcXVldWVJZD86IHN0cmluZ1xuICAgIHN1Ym1pc3Npb25JZD86IHN0cmluZ1xuICAgIHN0YXR1cz86IHN0cmluZ1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0XG4gIH0pID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICBpZiAob3B0cy5lbnZpcm9ubWVudElkKSBwYXJhbXMuc2V0KCdlbnZpcm9ubWVudElkJywgb3B0cy5lbnZpcm9ubWVudElkKVxuICAgIGlmIChvcHRzLnF1ZXVlSWQpIHBhcmFtcy5zZXQoJ3F1ZXVlSWQnLCBvcHRzLnF1ZXVlSWQpXG4gICAgaWYgKG9wdHMuc3VibWlzc2lvbklkKSBwYXJhbXMuc2V0KCdzdWJtaXNzaW9uSWQnLCBvcHRzLnN1Ym1pc3Npb25JZClcbiAgICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdHMuc3RhdHVzKVxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCkgPyBgPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCA6ICcnXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9pbnN0YW5jZXMke3F1ZXJ5fWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBpbnN0YW5jZUNvbHVtbnMpXG4gIH0pXG5cbmluc3RhbmNlQ29tbWFuZFxuICAuY29tbWFuZCgnZ2V0IDxpZD4nKVxuICAuZGVzY3JpcHRpb24oJ0dldCBhbiBpbnN0YW5jZSBieSBJRCcpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuICAuYWN0aW9uKGFzeW5jIChpZDogc3RyaW5nLCBvcHRzOiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2luc3RhbmNlcy8ke2lkfWApKVxuICAgIGZvcm1hdE91dHB1dChkYXRhLCBvcHRzLmZvcm1hdCwgaW5zdGFuY2VDb2x1bW5zKVxuICB9KVxuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.taskLogCommand = exports.submissionLogCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const format_js_1 = require("../format.js");
|
|
7
|
+
exports.submissionLogCommand = new commander_1.Command('submission-log')
|
|
8
|
+
.description('Manage submission logs');
|
|
9
|
+
exports.submissionLogCommand
|
|
10
|
+
.command('list')
|
|
11
|
+
.description('List logs for a submission')
|
|
12
|
+
.requiredOption('--submission-id <id>', 'Submission ID')
|
|
13
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submission-logs?submissionId=${opts.submissionId}`));
|
|
16
|
+
if (opts.format === 'table') {
|
|
17
|
+
data.items.forEach(item => console.log(item.message));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.submissionLogColumns);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
exports.taskLogCommand = new commander_1.Command('task-log')
|
|
24
|
+
.description('Manage task logs');
|
|
25
|
+
exports.taskLogCommand
|
|
26
|
+
.command('list')
|
|
27
|
+
.description('List task logs for a submission')
|
|
28
|
+
.requiredOption('--submission-id <id>', 'Submission ID')
|
|
29
|
+
.option('--task-id <id>', 'Task ID (optional, filter by specific task)')
|
|
30
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
let url = `/task-logs?submissionId=${opts.submissionId}`;
|
|
33
|
+
if (opts.taskId)
|
|
34
|
+
url += `&taskId=${opts.taskId}`;
|
|
35
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(url));
|
|
36
|
+
if (opts.format === 'table') {
|
|
37
|
+
data.items.forEach(item => console.log(item.message));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.taskLogColumns);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBMkM7QUFDM0Msa0NBQTJDO0FBQzNDLDRDQUFvRztBQUV2RixRQUFBLG9CQUFvQixHQUFHLElBQUksbUJBQU8sQ0FBQyxnQkFBZ0IsQ0FBQztLQUM5RCxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUV4Qyw0QkFBb0I7S0FDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNmLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztLQUN6QyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsZUFBZSxDQUFDO0tBQ3ZELFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQW9ELEVBQUUsRUFBRTtJQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFBQU0sRUFBQyxpQ0FBaUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQXlCLENBQUE7SUFDbEgsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUErQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFBLHdCQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGdDQUFvQixDQUFDLENBQUE7SUFDN0YsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFBO0FBRVMsUUFBQSxjQUFjLEdBQUcsSUFBSSxtQkFBTyxDQUFDLFVBQVUsQ0FBQztLQUNsRCxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtBQUVsQyxzQkFBYztLQUNYLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsaUNBQWlDLENBQUM7S0FDOUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsQ0FBQztLQUN2RCxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsNkNBQTZDLENBQUM7S0FDdkUsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzlHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBcUUsRUFBRSxFQUFFO0lBQ3RGLElBQUksR0FBRyxHQUFHLDJCQUEyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDeEQsSUFBSSxJQUFJLENBQUMsTUFBTTtRQUFFLEdBQUcsSUFBSSxXQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNoRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFBQU0sRUFBQyxHQUFHLENBQUMsQ0FBeUIsQ0FBQTtJQUNqRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQStCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNsRixDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUEsd0JBQVksRUFBQyxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsMEJBQWMsQ0FBQyxDQUFBO0lBQ3ZGLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCB7IGFwaVVybCwgZmV0Y2hKc29uIH0gZnJvbSAnLi4vYXV0aCdcbmltcG9ydCB7IGZvcm1hdE91dHB1dCwgc3VibWlzc2lvbkxvZ0NvbHVtbnMsIHRhc2tMb2dDb2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcblxuZXhwb3J0IGNvbnN0IHN1Ym1pc3Npb25Mb2dDb21tYW5kID0gbmV3IENvbW1hbmQoJ3N1Ym1pc3Npb24tbG9nJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2Ugc3VibWlzc2lvbiBsb2dzJylcblxuc3VibWlzc2lvbkxvZ0NvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgbG9ncyBmb3IgYSBzdWJtaXNzaW9uJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXN1Ym1pc3Npb24taWQgPGlkPicsICdTdWJtaXNzaW9uIElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgc3VibWlzc2lvbklkOiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3N1Ym1pc3Npb24tbG9ncz9zdWJtaXNzaW9uSWQ9JHtvcHRzLnN1Ym1pc3Npb25JZH1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgICBpZiAob3B0cy5mb3JtYXQgPT09ICd0YWJsZScpIHtcbiAgICAgIChkYXRhLml0ZW1zIGFzIHsgbWVzc2FnZTogc3RyaW5nIH1bXSkuZm9yRWFjaChpdGVtID0+IGNvbnNvbGUubG9nKGl0ZW0ubWVzc2FnZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBzdWJtaXNzaW9uTG9nQ29sdW1ucylcbiAgICB9XG4gIH0pXG5cbmV4cG9ydCBjb25zdCB0YXNrTG9nQ29tbWFuZCA9IG5ldyBDb21tYW5kKCd0YXNrLWxvZycpXG4gIC5kZXNjcmlwdGlvbignTWFuYWdlIHRhc2sgbG9ncycpXG5cbnRhc2tMb2dDb21tYW5kXG4gIC5jb21tYW5kKCdsaXN0JylcbiAgLmRlc2NyaXB0aW9uKCdMaXN0IHRhc2sgbG9ncyBmb3IgYSBzdWJtaXNzaW9uJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXN1Ym1pc3Npb24taWQgPGlkPicsICdTdWJtaXNzaW9uIElEJylcbiAgLm9wdGlvbignLS10YXNrLWlkIDxpZD4nLCAnVGFzayBJRCAob3B0aW9uYWwsIGZpbHRlciBieSBzcGVjaWZpYyB0YXNrKScpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuICAuYWN0aW9uKGFzeW5jIChvcHRzOiB7IHN1Ym1pc3Npb25JZDogc3RyaW5nOyB0YXNrSWQ/OiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBsZXQgdXJsID0gYC90YXNrLWxvZ3M/c3VibWlzc2lvbklkPSR7b3B0cy5zdWJtaXNzaW9uSWR9YFxuICAgIGlmIChvcHRzLnRhc2tJZCkgdXJsICs9IGAmdGFza0lkPSR7b3B0cy50YXNrSWR9YFxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKHVybCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gICAgaWYgKG9wdHMuZm9ybWF0ID09PSAndGFibGUnKSB7XG4gICAgICAoZGF0YS5pdGVtcyBhcyB7IG1lc3NhZ2U6IHN0cmluZyB9W10pLmZvckVhY2goaXRlbSA9PiBjb25zb2xlLmxvZyhpdGVtLm1lc3NhZ2UpKVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgdGFza0xvZ0NvbHVtbnMpXG4gICAgfVxuICB9KVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loginCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
exports.loginCommand = new commander_1.Command('login')
|
|
7
|
+
.description('Login into GENI Workflows and store credentials')
|
|
8
|
+
.option('--email <email>', 'User email')
|
|
9
|
+
.option('--password <password>', 'User password')
|
|
10
|
+
.action(async (opts) => {
|
|
11
|
+
if (!opts.email || !opts.password) {
|
|
12
|
+
exports.loginCommand.help();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const res = await fetch((0, auth_1.apiUrl)('/auth/login'), {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
headers: { 'Content-Type': 'application/json' },
|
|
18
|
+
body: JSON.stringify({ email: opts.email, password: opts.password }),
|
|
19
|
+
});
|
|
20
|
+
const data = await (0, auth_1.readJsonResponse)(res, { method: 'POST', url: (0, auth_1.apiUrl)('/auth/login') });
|
|
21
|
+
(0, auth_1.saveCredentials)(data.accessToken);
|
|
22
|
+
console.log('Logged in. Credentials saved to ~/.geni/credentials.json');
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQW9DO0FBQ3BDLGtDQUFvRTtBQUV2RCxRQUFBLFlBQVksR0FBRyxJQUFJLG1CQUFPLENBQUMsT0FBTyxDQUFDO0tBQzdDLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQztLQUM5RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0tBQ3ZDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLENBQUM7S0FDaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUEyQyxFQUFFLEVBQUU7SUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsb0JBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNuQixPQUFNO0lBQ1IsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUEsYUFBTSxFQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzdDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1FBQy9DLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUNyRSxDQUFDLENBQUM7SUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsdUJBQWdCLEVBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBQSxhQUFNLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FFdEYsQ0FBQztJQUNGLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhcGlVcmwsIHJlYWRKc29uUmVzcG9uc2UsIHNhdmVDcmVkZW50aWFscyB9IGZyb20gJy4uL2F1dGgnO1xuXG5leHBvcnQgY29uc3QgbG9naW5Db21tYW5kID0gbmV3IENvbW1hbmQoJ2xvZ2luJylcbiAgLmRlc2NyaXB0aW9uKCdMb2dpbiBpbnRvIEdFTkkgV29ya2Zsb3dzIGFuZCBzdG9yZSBjcmVkZW50aWFscycpXG4gIC5vcHRpb24oJy0tZW1haWwgPGVtYWlsPicsICdVc2VyIGVtYWlsJylcbiAgLm9wdGlvbignLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1VzZXIgcGFzc3dvcmQnKVxuICAuYWN0aW9uKGFzeW5jIChvcHRzOiB7IGVtYWlsPzogc3RyaW5nOyBwYXNzd29yZD86IHN0cmluZyB9KSA9PiB7XG4gICAgaWYgKCFvcHRzLmVtYWlsIHx8ICFvcHRzLnBhc3N3b3JkKSB7XG4gICAgICBsb2dpbkNvbW1hbmQuaGVscCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYXBpVXJsKCcvYXV0aC9sb2dpbicpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBlbWFpbDogb3B0cy5lbWFpbCwgcGFzc3dvcmQ6IG9wdHMucGFzc3dvcmQgfSksXG4gICAgfSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uUmVzcG9uc2UocmVzLCB7IG1ldGhvZDogJ1BPU1QnLCB1cmw6IGFwaVVybCgnL2F1dGgvbG9naW4nKSB9KSBhcyB7XG4gICAgICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgc2F2ZUNyZWRlbnRpYWxzKGRhdGEuYWNjZXNzVG9rZW4pO1xuICAgIGNvbnNvbGUubG9nKCdMb2dnZWQgaW4uIENyZWRlbnRpYWxzIHNhdmVkIHRvIH4vLmdlbmkvY3JlZGVudGlhbHMuanNvbicpO1xuICB9KTtcbiJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pluginCommand = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const auth_1 = require("../auth");
|
|
7
|
+
const format_js_1 = require("../format.js");
|
|
8
|
+
exports.pluginCommand = new commander_1.Command('plugin')
|
|
9
|
+
.description('Manage plugins');
|
|
10
|
+
exports.pluginCommand
|
|
11
|
+
.command('list')
|
|
12
|
+
.description('List plugins')
|
|
13
|
+
.option('--status <status>', 'Filter by status (e.g. ACTIVE, PENDING, FAILED, DELETED)')
|
|
14
|
+
.option('--type <type>', 'Filter by plugin type (e.g. sentieon-license-server)')
|
|
15
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
16
|
+
.action(async (opts) => {
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
if (opts.status)
|
|
19
|
+
params.set('status', opts.status);
|
|
20
|
+
if (opts.type)
|
|
21
|
+
params.set('type', opts.type);
|
|
22
|
+
if (process.env.GENI_TENANT_ID)
|
|
23
|
+
params.set('tenantId', process.env.GENI_TENANT_ID);
|
|
24
|
+
const query = params.size ? `?${params}` : '';
|
|
25
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/plugins${query}`));
|
|
26
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.pluginColumns);
|
|
27
|
+
});
|
|
28
|
+
exports.pluginCommand
|
|
29
|
+
.command('get <id>')
|
|
30
|
+
.description('Get a plugin by ID')
|
|
31
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
32
|
+
.action(async (id, opts) => {
|
|
33
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
34
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/plugins/${id}${query}`));
|
|
35
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.pluginColumns);
|
|
36
|
+
});
|
|
37
|
+
exports.pluginCommand
|
|
38
|
+
.command('delete <id>')
|
|
39
|
+
.description('Delete a plugin')
|
|
40
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
41
|
+
.action(async (id, opts) => {
|
|
42
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
43
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/plugins/${id}${query}`), {
|
|
44
|
+
method: 'DELETE',
|
|
45
|
+
});
|
|
46
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.pluginColumns);
|
|
47
|
+
});
|
|
48
|
+
const sentieonCommand = new commander_1.Command('sentieon')
|
|
49
|
+
.description('Create a Sentieon license server plugin')
|
|
50
|
+
.requiredOption('--environment-id <id>', 'Environment ID')
|
|
51
|
+
.requiredOption('--name <name>', 'Plugin name')
|
|
52
|
+
.requiredOption('--fqdn <fqdn>', 'License server FQDN (must match the license file MachineID)')
|
|
53
|
+
.requiredOption('--license-file <path>', 'Path to Sentieon license file (.lic)')
|
|
54
|
+
.option('--desired-count <n>', 'ECS service desired count (0 = deploy only, 1 = start immediately)', '1')
|
|
55
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
56
|
+
.action(async (opts) => {
|
|
57
|
+
const licenseFileContent = (0, fs_1.readFileSync)(opts.licenseFile);
|
|
58
|
+
const licenseFileBase64 = licenseFileContent.toString('base64');
|
|
59
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)('/admin/plugins'), {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: { 'Content-Type': 'application/json' },
|
|
62
|
+
body: JSON.stringify({
|
|
63
|
+
name: opts.name,
|
|
64
|
+
type: 'sentieon-license-server',
|
|
65
|
+
environmentId: opts.environmentId,
|
|
66
|
+
config: {
|
|
67
|
+
fqdn: opts.fqdn,
|
|
68
|
+
desiredCount: parseInt(opts.desiredCount, 10),
|
|
69
|
+
licenseFileBase64,
|
|
70
|
+
},
|
|
71
|
+
...(process.env.GENI_TENANT_ID ? { tenantId: process.env.GENI_TENANT_ID } : {}),
|
|
72
|
+
}),
|
|
73
|
+
});
|
|
74
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.pluginColumns);
|
|
75
|
+
});
|
|
76
|
+
exports.pluginCommand.addCommand(new commander_1.Command('create')
|
|
77
|
+
.description('Create a plugin')
|
|
78
|
+
.addCommand(sentieonCommand)
|
|
79
|
+
.action(function () { this.help(); }));
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBaUM7QUFDakMseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FBNkU7QUFFaEUsUUFBQSxhQUFhLEdBQUcsSUFBSSxtQkFBTyxDQUFDLFFBQVEsQ0FBQztLQUMvQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtBQUVoQyxxQkFBYTtLQUNWLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsY0FBYyxDQUFDO0tBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSwwREFBMEQsQ0FBQztLQUN2RixNQUFNLENBQUMsZUFBZSxFQUFFLHNEQUFzRCxDQUFDO0tBQy9FLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQThELEVBQUUsRUFBRTtJQUMvRSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO0lBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSTtRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztRQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDbEYsTUFBTSxL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QUMsVUFBVSxDQUN0QixJQUFJLG1CQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2xCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztLQUM5QixVQUFVLENBQUMsZUFBZSxDQUFDO0tBQzNCLE1BQU0sQ0FBQyxjQUEyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IHsgYXBpVXJsLCBmZXRjaEpzb24gfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgZm9ybWF0T3V0cHV0LCBwbHVnaW5Db2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcblxuZXhwb3J0IGNvbnN0IHBsdWdpbkNvbW1hbmQgPSBuZXcgQ29tbWFuZCgncGx1Z2luJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2UgcGx1Z2lucycpXG5cbnBsdWdpbkNvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgcGx1Z2lucycpXG4gIC5vcHRpb24oJy0tc3RhdHVzIDxzdGF0dXM+JywgJ0ZpbHRlciBieSBzdGF0dXMgKGUuZy4gQUNUSVZFLCBQRU5ESU5HLCBGQUlMRUQsIERFTEVURUQpJylcbiAgLm9wdGlvbignLS10eXBlIDx0eXBlPicsICdGaWx0ZXIgYnkgcGx1Z2luIHR5cGUgKGUuZy4gc2VudGllb24tbGljZW5zZS1zZXJ2ZXIpJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgaWYgKG9wdHMuc3RhdHVzKSBwYXJhbXMuc2V0KCdzdGF0dXMnLCBvcHRzLnN0YXR1cylcbiAgICBpZiAob3B0cy50eXBlKSBwYXJhbXMuc2V0KCd0eXBlJywgb3B0cy50eXBlKVxuICAgIGlmIChwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCkgcGFyYW1zLnNldCgndGVuYW50SWQnLCBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRClcbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy5zaXplID8gYD8ke3BhcmFtc31gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3BsdWdpbnMke3F1ZXJ5fWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBwbHVnaW5Db2x1bW5zKVxuICB9KVxuXG5wbHVnaW5Db21tYW5kXG4gIC5jb21tYW5kKCdnZXQgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignR2V0IGEgcGx1Z2luIGJ5IElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcsIG9wdHM6IHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyBgP3RlbmFudElkPSR7cHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUR9YCA6ICcnXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9hZG1pbi9wbHVnaW5zLyR7aWR9JHtxdWVyeX1gKSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHBsdWdpbkNvbHVtbnMpXG4gIH0pXG5cbnBsdWdpbkNvbW1hbmRcbiAgLmNvbW1hbmQoJ2RlbGV0ZSA8aWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdEZWxldGUgYSBwbHVnaW4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaWQ6IHN0cmluZywgb3B0czogeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCA/IGA/dGVuYW50SWQ9JHtwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRH1gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3BsdWdpbnMvJHtpZH0ke3F1ZXJ5fWApLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgIH0pXG4gICAgZm9ybWF0T3V0cHV0KGRhdGEsIG9wdHMuZm9ybWF0LCBwbHVnaW5Db2x1bW5zKVxuICB9KVxuXG5jb25zdCBzZW50aWVvbkNvbW1hbmQgPSBuZXcgQ29tbWFuZCgnc2VudGllb24nKVxuICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIFNlbnRpZW9uIGxpY2Vuc2Ugc2VydmVyIHBsdWdpbicpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1lbnZpcm9ubWVudC1pZCA8aWQ+JywgJ0Vudmlyb25tZW50IElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLW5hbWUgPG5hbWU+JywgJ1BsdWdpbiBuYW1lJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLWZxZG4gPGZxZG4+JywgJ0xpY2Vuc2Ugc2VydmVyIEZRRE4gKG11c3QgbWF0Y2ggdGhlIGxpY2Vuc2UgZmlsZSBNYWNoaW5lSUQpJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLWxpY2Vuc2UtZmlsZSA8cGF0aD4nLCAnUGF0aCB0byBTZW50aWVvbiBsaWNlbnNlIGZpbGUgKC5saWMpJylcbiAgLm9wdGlvbignLS1kZXNpcmVkLWNvdW50IDxuPicsICdFQ1Mgc2VydmljZSBkZXNpcmVkIGNvdW50ICgwID0gZGVwbG95IG9ubHksIDEgPSBzdGFydCBpbW1lZGlhdGVseSknLCAnMScpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuICAuYWN0aW9uKGFzeW5jIChvcHRzOiB7XG4gICAgZW52aXJvbm1lbnRJZDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gICAgZnFkbjogc3RyaW5nXG4gICAgbGljZW5zZUZpbGU6IHN0cmluZ1xuICAgIGRlc2lyZWRDb3VudDogc3RyaW5nXG4gICAgZm9ybWF0OiBPdXRwdXRGb3JtYXRcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGxpY2Vuc2VGaWxlQ29udGVudCA9IHJlYWRGaWxlU3luYyhvcHRzLmxpY2Vuc2VGaWxlKVxuICAgIGNvbnN0IGxpY2Vuc2VGaWxlQmFzZTY0ID0gbGljZW5zZUZpbGVDb250ZW50LnRvU3RyaW5nKCdiYXNlNjQnKVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoJy9hZG1pbi9wbHVnaW5zJyksIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6IG9wdHMubmFtZSxcbiAgICAgICAgdHlwZTogJ3NlbnRpZW9uLWxpY2Vuc2Utc2VydmVyJyxcbiAgICAgICAgZW52aXJvbm1lbnRJZDogb3B0cy5lbnZpcm9ubWVudElkLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBmcWRuOiBvcHRzLmZxZG4sXG4gICAgICAgICAgZGVzaXJlZENvdW50OiBwYXJzZUludChvcHRzLmRlc2lyZWRDb3VudCwgMTApLFxuICAgICAgICAgIGxpY2Vuc2VGaWxlQmFzZTY0LFxuICAgICAgICB9LFxuICAgICAgICAuLi4ocHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyB7IHRlbmFudElkOiBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCB9IDoge30pLFxuICAgICAgfSksXG4gICAgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHBsdWdpbkNvbHVtbnMpXG4gIH0pXG5cbnBsdWdpbkNvbW1hbmQuYWRkQ29tbWFuZChcbiAgbmV3IENvbW1hbmQoJ2NyZWF0ZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBwbHVnaW4nKVxuICAgIC5hZGRDb21tYW5kKHNlbnRpZW9uQ29tbWFuZClcbiAgICAuYWN0aW9uKGZ1bmN0aW9uICh0aGlzOiBDb21tYW5kKSB7IHRoaXMuaGVscCgpIH0pXG4pXG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queueCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const auth_1 = require("../auth");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const format_js_1 = require("../format.js");
|
|
8
|
+
exports.queueCommand = new commander_1.Command('queue')
|
|
9
|
+
.description('Manage queues');
|
|
10
|
+
exports.queueCommand
|
|
11
|
+
.command('list')
|
|
12
|
+
.description('List queues')
|
|
13
|
+
.option('--status <status>', 'Filter by status (e.g. ACTIVE, PENDING, FAILED, DELETED)')
|
|
14
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
15
|
+
.action(async (opts) => {
|
|
16
|
+
const params = new URLSearchParams();
|
|
17
|
+
if (opts.status)
|
|
18
|
+
params.set('status', opts.status);
|
|
19
|
+
if (process.env.GENI_TENANT_ID)
|
|
20
|
+
params.set('tenantId', process.env.GENI_TENANT_ID);
|
|
21
|
+
const query = params.size ? `?${params}` : '';
|
|
22
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/queues${query}`));
|
|
23
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.queueColumns);
|
|
24
|
+
});
|
|
25
|
+
exports.queueCommand
|
|
26
|
+
.command('get <id>')
|
|
27
|
+
.description('Get a queue by ID')
|
|
28
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
29
|
+
.action(async (id, opts) => {
|
|
30
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
31
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/queues/${id}${query}`));
|
|
32
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.queueColumns);
|
|
33
|
+
});
|
|
34
|
+
exports.queueCommand
|
|
35
|
+
.command('delete <id>')
|
|
36
|
+
.description('Delete a queue')
|
|
37
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
38
|
+
.action(async (id, opts) => {
|
|
39
|
+
const query = process.env.GENI_TENANT_ID ? `?tenantId=${process.env.GENI_TENANT_ID}` : '';
|
|
40
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/queues/${id}${query}`), {
|
|
41
|
+
method: 'DELETE',
|
|
42
|
+
});
|
|
43
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.queueColumns);
|
|
44
|
+
});
|
|
45
|
+
exports.queueCommand
|
|
46
|
+
.command('create')
|
|
47
|
+
.description('Create a queue')
|
|
48
|
+
.requiredOption('--name <name>', 'Queue name')
|
|
49
|
+
.requiredOption('--environment-id <id>', 'Environment ID')
|
|
50
|
+
.option('--execution-mode <mode>', 'Execution mode (spot or on-demand)', 'spot')
|
|
51
|
+
.option('--instance-type <type>', 'Instance type (repeatable)', (val, acc) => [...acc, val], ['optimal'])
|
|
52
|
+
.option('--max-vcpus <n>', 'Maximum vCPUs', '256')
|
|
53
|
+
.option('--storage-size-gb <n>', 'EBS storage size in GB', '50')
|
|
54
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
55
|
+
.action(async (opts) => {
|
|
56
|
+
if (opts.executionMode !== 'spot' && opts.executionMode !== 'on-demand') {
|
|
57
|
+
throw (0, errors_1.invalidArgument)('Invalid --execution-mode value. Expected "spot" or "on-demand".');
|
|
58
|
+
}
|
|
59
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)('/admin/queues'), {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: { 'Content-Type': 'application/json' },
|
|
62
|
+
body: JSON.stringify({
|
|
63
|
+
name: opts.name,
|
|
64
|
+
environmentId: opts.environmentId,
|
|
65
|
+
executionMode: opts.executionMode,
|
|
66
|
+
instanceTypes: opts.instanceType,
|
|
67
|
+
maxvCpus: parseInt(opts.maxVcpus, 10),
|
|
68
|
+
storageSizeGb: parseInt(opts.storageSizeGb, 10),
|
|
69
|
+
...(process.env.GENI_TENANT_ID ? { tenantId: process.env.GENI_TENANT_ID } : {}),
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.queueColumns);
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyxzQ0FBMkM7QUFDM0MsNENBQTRFO0FBRS9ELFFBQUEsWUFBWSxHQUFHLElBQUksbUJBQU8sQ0FBQyxPQUFPLENBQUM7S0FDN0MsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBRS9CLG9CQUFZO0tBQ1QsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNmLFdBQVcsQ0FBQyxhQUFhLENBQUM7S0FDMUIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDBEQUEwRCxDQUFDO0tBQ3ZGLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQStDLEVBQUUsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO0lBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWM7UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2xGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUM3QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFB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WSxDQUFDLENBQUE7QUFDL0MsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInXG5pbXBvcnQgeyBhcGlVcmwsIGZldGNoSnNvbiB9IGZyb20gJy4uL2F1dGgnXG5pbXBvcnQgeyBpbnZhbGlkQXJndW1lbnQgfSBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgeyBmb3JtYXRPdXRwdXQsIHF1ZXVlQ29sdW1ucywgdHlwZSBPdXRwdXRGb3JtYXQgfSBmcm9tICcuLi9mb3JtYXQuanMnXG5cbmV4cG9ydCBjb25zdCBxdWV1ZUNvbW1hbmQgPSBuZXcgQ29tbWFuZCgncXVldWUnKVxuICAuZGVzY3JpcHRpb24oJ01hbmFnZSBxdWV1ZXMnKVxuXG5xdWV1ZUNvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgcXVldWVzJylcbiAgLm9wdGlvbignLS1zdGF0dXMgPHN0YXR1cz4nLCAnRmlsdGVyIGJ5IHN0YXR1cyAoZS5nLiBBQ1RJVkUsIFBFTkRJTkcsIEZBSUxFRCwgREVMRVRFRCknKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBzdGF0dXM/OiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdHMuc3RhdHVzKVxuICAgIGlmIChwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCkgcGFyYW1zLnNldCgndGVuYW50SWQnLCBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRClcbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy5zaXplID8gYD8ke3BhcmFtc31gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3F1ZXVlcyR7cXVlcnl9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gICAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIHF1ZXVlQ29sdW1ucylcbiAgfSlcblxucXVldWVDb21tYW5kXG4gIC5jb21tYW5kKCdnZXQgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignR2V0IGEgcXVldWUgYnkgSUQnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaWQ6IHN0cmluZywgb3B0czogeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcXVlcnkgPSBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCA/IGA/dGVuYW50SWQ9JHtwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRH1gIDogJydcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3F1ZXVlcy8ke2lkfSR7cXVlcnl9YCkpXG4gICAgZm9ybWF0T3V0cHV0KGRhdGEsIG9wdHMuZm9ybWF0LCBxdWV1ZUNvbHVtbnMpXG4gIH0pXG5cbnF1ZXVlQ29tbWFuZFxuICAuY29tbWFuZCgnZGVsZXRlIDxpZD4nKVxuICAuZGVzY3JpcHRpb24oJ0RlbGV0ZSBhIHF1ZXVlJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcsIG9wdHM6IHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyBgP3RlbmFudElkPSR7cHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUR9YCA6ICcnXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9hZG1pbi9xdWV1ZXMvJHtpZH0ke3F1ZXJ5fWApLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgIH0pXG4gICAgZm9ybWF0T3V0cHV0KGRhdGEsIG9wdHMuZm9ybWF0LCBxdWV1ZUNvbHVtbnMpXG4gIH0pXG5cbnF1ZXVlQ29tbWFuZFxuICAuY29tbWFuZCgnY3JlYXRlJylcbiAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBxdWV1ZScpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdRdWV1ZSBuYW1lJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLWVudmlyb25tZW50LWlkIDxpZD4nLCAnRW52aXJvbm1lbnQgSUQnKVxuICAub3B0aW9uKCctLWV4ZWN1dGlvbi1tb2RlIDxtb2RlPicsICdFeGVjdXRpb24gbW9kZSAoc3BvdCBvciBvbi1kZW1hbmQpJywgJ3Nwb3QnKVxuICAub3B0aW9uKCctLWluc3RhbmNlLXR5cGUgPHR5cGU+JywgJ0luc3RhbmNlIHR5cGUgKHJlcGVhdGFibGUpJywgKHZhbCwgYWNjOiBzdHJpbmdbXSkgPT4gWy4uLmFjYywgdmFsXSwgWydvcHRpbWFsJ10pXG4gIC5vcHRpb24oJy0tbWF4LXZjcHVzIDxuPicsICdNYXhpbXVtIHZDUFVzJywgJzI1NicpXG4gIC5vcHRpb24oJy0tc3RvcmFnZS1zaXplLWdiIDxuPicsICdFQlMgc3RvcmFnZSBzaXplIGluIEdCJywgJzUwJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBlbnZpcm9ubWVudElkOiBzdHJpbmdcbiAgICBleGVjdXRpb25Nb2RlOiBzdHJpbmdcbiAgICBpbnN0YW5jZVR5cGU6IHN0cmluZ1tdXG4gICAgbWF4VmNwdXM6IHN0cmluZ1xuICAgIHN0b3JhZ2VTaXplR2I6IHN0cmluZ1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0XG4gIH0pID0+IHtcbiAgICBpZiAob3B0cy5leGVjdXRpb25Nb2RlICE9PSAnc3BvdCcgJiYgb3B0cy5leGVjdXRpb25Nb2RlICE9PSAnb24tZGVtYW5kJykge1xuICAgICAgdGhyb3cgaW52YWxpZEFyZ3VtZW50KFxuICAgICAgICAnSW52YWxpZCAtLWV4ZWN1dGlvbi1tb2RlIHZhbHVlLiBFeHBlY3RlZCBcInNwb3RcIiBvciBcIm9uLWRlbWFuZFwiLicsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoJy9hZG1pbi9xdWV1ZXMnKSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogb3B0cy5uYW1lLFxuICAgICAgICBlbnZpcm9ubWVudElkOiBvcHRzLmVudmlyb25tZW50SWQsXG4gICAgICAgIGV4ZWN1dGlvbk1vZGU6IG9wdHMuZXhlY3V0aW9uTW9kZSxcbiAgICAgICAgaW5zdGFuY2VUeXBlczogb3B0cy5pbnN0YW5jZVR5cGUsXG4gICAgICAgIG1heHZDcHVzOiBwYXJzZUludChvcHRzLm1heFZjcHVzLCAxMCksXG4gICAgICAgIHN0b3JhZ2VTaXplR2I6IHBhcnNlSW50KG9wdHMuc3RvcmFnZVNpemVHYiwgMTApLFxuICAgICAgICAuLi4ocHJvY2Vzcy5lbnYuR0VOSV9URU5BTlRfSUQgPyB7IHRlbmFudElkOiBwcm9jZXNzLmVudi5HRU5JX1RFTkFOVF9JRCB9IDoge30pLFxuICAgICAgfSksXG4gICAgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHF1ZXVlQ29sdW1ucylcbiAgfSlcbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registryCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
const auth_1 = require("../auth");
|
|
7
|
+
const format_js_1 = require("../format.js");
|
|
8
|
+
exports.registryCommand = new commander_1.Command('registry')
|
|
9
|
+
.description('Manage registries');
|
|
10
|
+
exports.registryCommand
|
|
11
|
+
.command('list')
|
|
12
|
+
.description('List registries')
|
|
13
|
+
.option('--status <status>', 'Filter by status (e.g. ACTIVE, PENDING, FAILED, DELETED)')
|
|
14
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
15
|
+
.action(async (opts) => {
|
|
16
|
+
const params = new URLSearchParams();
|
|
17
|
+
if (opts.status)
|
|
18
|
+
params.set('status', opts.status);
|
|
19
|
+
const query = params.toString() ? `?${params.toString()}` : '';
|
|
20
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries${query}`));
|
|
21
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.registryColumns);
|
|
22
|
+
});
|
|
23
|
+
exports.registryCommand
|
|
24
|
+
.command('get <id>')
|
|
25
|
+
.description('Get a registry by ID')
|
|
26
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
27
|
+
.action(async (id, opts) => {
|
|
28
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${id}`));
|
|
29
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.registryColumns);
|
|
30
|
+
});
|
|
31
|
+
exports.registryCommand
|
|
32
|
+
.command('create')
|
|
33
|
+
.description('Create a registry')
|
|
34
|
+
.requiredOption('--name <name>', 'Registry name')
|
|
35
|
+
.option('--image-tag-mutability <mutability>', 'Image tag mutability (MUTABLE or IMMUTABLE)', 'IMMUTABLE')
|
|
36
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
37
|
+
.action(async (opts) => {
|
|
38
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)('/admin/registries'), {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: { 'Content-Type': 'application/json' },
|
|
41
|
+
body: JSON.stringify({
|
|
42
|
+
name: opts.name,
|
|
43
|
+
imageTagMutability: opts.imageTagMutability,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.registryColumns);
|
|
47
|
+
});
|
|
48
|
+
exports.registryCommand
|
|
49
|
+
.command('delete <id>')
|
|
50
|
+
.description('Delete a registry')
|
|
51
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
52
|
+
.action(async (id, opts) => {
|
|
53
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${id}`), {
|
|
54
|
+
method: 'DELETE',
|
|
55
|
+
});
|
|
56
|
+
(0, format_js_1.formatOutput)(data, opts.format, format_js_1.registryColumns);
|
|
57
|
+
});
|
|
58
|
+
exports.registryCommand
|
|
59
|
+
.command('login <id>')
|
|
60
|
+
.description('Authenticate Docker with a registry')
|
|
61
|
+
.action(async (id) => {
|
|
62
|
+
const auth = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/admin/registries/${id}/auth`));
|
|
63
|
+
try {
|
|
64
|
+
(0, child_process_1.execSync)(`docker login -u ${auth.username} -p ${auth.password} ${auth.proxyEndpoint}`, {
|
|
65
|
+
stdio: 'inherit',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGlEQUF3QztBQUN4QyxrQ0FBMkM7QUFDM0MsNENBQStFO0FBRWxFLFFBQUEsZUFBZSxHQUFHLElBQUksbUJBQU8sQ0FBQyxVQUFVLENBQUM7S0FDbkQsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFFbkMsdUJBQWU7S0FDWixPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2YsV0FBVyxDQUFDLGlCQUFpQixDQUFDO0tBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSwwREFBMEQsQ0FBQztLQUN2RixTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUcsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUErQyxFQUFFLEVBQUU7SUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtJQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzlELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLG9CQUFvQixLQUFLLEVBQUUsQ0FBQyxDQUF5QixDQUFBO0lBQ3pGLElBQUEsd0JBQVksRUFBQyxJQUFJLENBQUMsTUFB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RSxFQUFFO0lBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUtsRSxDQUFBO0lBRUQsSUFBSSxDQUFDO1FBQ0gsSUFBQSx3QkFBUSxFQUFDLG1CQUFtQixJQUFJLENBQUMsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3JGLEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IGFwaVVybCwgZmV0Y2hKc29uIH0gZnJvbSAnLi4vYXV0aCdcbmltcG9ydCB7IGZvcm1hdE91dHB1dCwgcmVnaXN0cnlDb2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdHJ5Q29tbWFuZCA9IG5ldyBDb21tYW5kKCdyZWdpc3RyeScpXG4gIC5kZXNjcmlwdGlvbignTWFuYWdlIHJlZ2lzdHJpZXMnKVxuXG5yZWdpc3RyeUNvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgcmVnaXN0cmllcycpXG4gIC5vcHRpb24oJy0tc3RhdHVzIDxzdGF0dXM+JywgJ0ZpbHRlciBieSBzdGF0dXMgKGUuZy4gQUNUSVZFLCBQRU5ESU5HLCBGQUlMRUQsIERFTEVURUQpJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgc3RhdHVzPzogc3RyaW5nOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgaWYgKG9wdHMuc3RhdHVzKSBwYXJhbXMuc2V0KCdzdGF0dXMnLCBvcHRzLnN0YXR1cylcbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpID8gYD8ke3BhcmFtcy50b1N0cmluZygpfWAgOiAnJ1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvYWRtaW4vcmVnaXN0cmllcyR7cXVlcnl9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gICAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIHJlZ2lzdHJ5Q29sdW1ucylcbiAgfSlcblxucmVnaXN0cnlDb21tYW5kXG4gIC5jb21tYW5kKCdnZXQgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignR2V0IGEgcmVnaXN0cnkgYnkgSUQnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaWQ6IHN0cmluZywgb3B0czogeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9hZG1pbi9yZWdpc3RyaWVzLyR7aWR9YCkpXG4gICAgZm9ybWF0T3V0cHV0KGRhdGEsIG9wdHMuZm9ybWF0LCByZWdpc3RyeUNvbHVtbnMpXG4gIH0pXG5cbnJlZ2lzdHJ5Q29tbWFuZFxuICAuY29tbWFuZCgnY3JlYXRlJylcbiAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSByZWdpc3RyeScpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdSZWdpc3RyeSBuYW1lJylcbiAgLm9wdGlvbignLS1pbWFnZS10YWctbXV0YWJpbGl0eSA8bXV0YWJpbGl0eT4nLCAnSW1hZ2UgdGFnIG11dGFiaWxpdHkgKE1VVEFCTEUgb3IgSU1NVVRBQkxFKScsICdJTU1VVEFCTEUnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGltYWdlVGFnTXV0YWJpbGl0eTogc3RyaW5nXG4gICAgZm9ybWF0OiBPdXRwdXRGb3JtYXRcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKCcvYWRtaW4vcmVnaXN0cmllcycpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiBvcHRzLm5hbWUsXG4gICAgICAgIGltYWdlVGFnTXV0YWJpbGl0eTogb3B0cy5pbWFnZVRhZ011dGFiaWxpdHksXG4gICAgICB9KSxcbiAgICB9KVxuICAgIGZvcm1hdE91dHB1dChkYXRhLCBvcHRzLmZvcm1hdCwgcmVnaXN0cnlDb2x1bW5zKVxuICB9KVxuXG5yZWdpc3RyeUNvbW1hbmRcbiAgLmNvbW1hbmQoJ2RlbGV0ZSA8aWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdEZWxldGUgYSByZWdpc3RyeScpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuICAuYWN0aW9uKGFzeW5jIChpZDogc3RyaW5nLCBvcHRzOiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2FkbWluL3JlZ2lzdHJpZXMvJHtpZH1gKSwge1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICB9KVxuICAgIGZvcm1hdE91dHB1dChkYXRhLCBvcHRzLmZvcm1hdCwgcmVnaXN0cnlDb2x1bW5zKVxuICB9KVxuXG5yZWdpc3RyeUNvbW1hbmRcbiAgLmNvbW1hbmQoJ2xvZ2luIDxpZD4nKVxuICAuZGVzY3JpcHRpb24oJ0F1dGhlbnRpY2F0ZSBEb2NrZXIgd2l0aCBhIHJlZ2lzdHJ5JylcbiAgLmFjdGlvbihhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGF1dGggPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvYWRtaW4vcmVnaXN0cmllcy8ke2lkfS9hdXRoYCkpIGFzIHtcbiAgICAgIHByb3h5RW5kcG9pbnQ6IHN0cmluZ1xuICAgICAgdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgcGFzc3dvcmQ6IHN0cmluZ1xuICAgICAgZXhwaXJlc0F0OiBzdHJpbmcgfCBudWxsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGV4ZWNTeW5jKGBkb2NrZXIgbG9naW4gLXUgJHthdXRoLnVzZXJuYW1lfSAtcCAke2F1dGgucGFzc3dvcmR9ICR7YXV0aC5wcm94eUVuZHBvaW50fWAsIHtcbiAgICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7XG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gIH0pXG4iXX0=
|