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.
Files changed (58) hide show
  1. package/dist/auth.d.ts +8 -0
  2. package/dist/auth.js +76 -0
  3. package/dist/aws/clients.d.ts +18 -0
  4. package/dist/aws/clients.js +34 -0
  5. package/dist/commands/activate.d.ts +2 -0
  6. package/dist/commands/activate.js +20 -0
  7. package/dist/commands/activity-log.d.ts +2 -0
  8. package/dist/commands/activity-log.js +31 -0
  9. package/dist/commands/api-token.d.ts +2 -0
  10. package/dist/commands/api-token.js +96 -0
  11. package/dist/commands/auth.d.ts +2 -0
  12. package/dist/commands/auth.js +55 -0
  13. package/dist/commands/engine.d.ts +2 -0
  14. package/dist/commands/engine.js +83 -0
  15. package/dist/commands/environment.d.ts +2 -0
  16. package/dist/commands/environment.js +69 -0
  17. package/dist/commands/image.d.ts +2 -0
  18. package/dist/commands/image.js +40 -0
  19. package/dist/commands/instance.d.ts +2 -0
  20. package/dist/commands/instance.js +39 -0
  21. package/dist/commands/log.d.ts +3 -0
  22. package/dist/commands/log.js +43 -0
  23. package/dist/commands/login.d.ts +2 -0
  24. package/dist/commands/login.js +24 -0
  25. package/dist/commands/plugin.d.ts +2 -0
  26. package/dist/commands/plugin.js +80 -0
  27. package/dist/commands/queue.d.ts +2 -0
  28. package/dist/commands/queue.js +74 -0
  29. package/dist/commands/registry.d.ts +2 -0
  30. package/dist/commands/registry.js +72 -0
  31. package/dist/commands/setup/create.d.ts +2 -0
  32. package/dist/commands/setup/create.js +254 -0
  33. package/dist/commands/setup/delete.d.ts +2 -0
  34. package/dist/commands/setup/delete.js +97 -0
  35. package/dist/commands/setup/status.d.ts +2 -0
  36. package/dist/commands/setup/status.js +46 -0
  37. package/dist/commands/setup.d.ts +2 -0
  38. package/dist/commands/setup.js +13 -0
  39. package/dist/commands/storage.d.ts +2 -0
  40. package/dist/commands/storage.js +67 -0
  41. package/dist/commands/submission.d.ts +2 -0
  42. package/dist/commands/submission.js +87 -0
  43. package/dist/commands/task.d.ts +2 -0
  44. package/dist/commands/task.js +21 -0
  45. package/dist/commands/tenant.d.ts +2 -0
  46. package/dist/commands/tenant.js +68 -0
  47. package/dist/commands/user.d.ts +2 -0
  48. package/dist/commands/user.js +82 -0
  49. package/dist/commands/workflow.d.ts +2 -0
  50. package/dist/commands/workflow.js +80 -0
  51. package/dist/errors.d.ts +38 -0
  52. package/dist/errors.js +194 -0
  53. package/dist/format.d.ts +22 -0
  54. package/dist/format.js +155 -0
  55. package/dist/index.d.ts +2 -0
  56. package/dist/index.js +91 -0
  57. package/dist/templates/setup.yaml +503 -0
  58. 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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const imageCommand: Command;
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const instanceCommand: Command;
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const submissionLogCommand: Command;
3
+ export declare const taskLogCommand: Command;
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const loginCommand: Command;
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const pluginCommand: Command;
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const queueCommand: Command;
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const registryCommand: Command;
@@ -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=
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const createCommand: Command;