@afroze9/terrastudio-cli 0.42.4 → 0.48.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 (38) hide show
  1. package/bundle/cli.cjs +29866 -0
  2. package/package.json +6 -13
  3. package/dist/cli.d.ts +0 -3
  4. package/dist/cli.d.ts.map +0 -1
  5. package/dist/cli.js +0 -20
  6. package/dist/cli.js.map +0 -1
  7. package/dist/commands/hcl.d.ts +0 -3
  8. package/dist/commands/hcl.d.ts.map +0 -1
  9. package/dist/commands/hcl.js +0 -158
  10. package/dist/commands/hcl.js.map +0 -1
  11. package/dist/commands/module.d.ts +0 -3
  12. package/dist/commands/module.d.ts.map +0 -1
  13. package/dist/commands/module.js +0 -277
  14. package/dist/commands/module.js.map +0 -1
  15. package/dist/commands/project.d.ts +0 -3
  16. package/dist/commands/project.d.ts.map +0 -1
  17. package/dist/commands/project.js +0 -137
  18. package/dist/commands/project.js.map +0 -1
  19. package/dist/commands/resource.d.ts +0 -3
  20. package/dist/commands/resource.d.ts.map +0 -1
  21. package/dist/commands/resource.js +0 -366
  22. package/dist/commands/resource.js.map +0 -1
  23. package/dist/commands/terraform.d.ts +0 -3
  24. package/dist/commands/terraform.d.ts.map +0 -1
  25. package/dist/commands/terraform.js +0 -199
  26. package/dist/commands/terraform.js.map +0 -1
  27. package/dist/index.d.ts +0 -3
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -4
  30. package/dist/index.js.map +0 -1
  31. package/dist/platform/node-io.d.ts +0 -29
  32. package/dist/platform/node-io.d.ts.map +0 -1
  33. package/dist/platform/node-io.js +0 -61
  34. package/dist/platform/node-io.js.map +0 -1
  35. package/dist/platform/resolve-project.d.ts +0 -9
  36. package/dist/platform/resolve-project.d.ts.map +0 -1
  37. package/dist/platform/resolve-project.js +0 -41
  38. package/dist/platform/resolve-project.js.map +0 -1
@@ -1,137 +0,0 @@
1
- import { Command } from 'commander';
2
- import { storage, toLoadedProject } from '../platform/node-io.js';
3
- import { Project } from '@terrastudio/project';
4
- import { resolveProjectPath } from '../platform/resolve-project.js';
5
- /** Keys that should have their values redacted in output. */
6
- function isSensitiveKey(key) {
7
- const lower = key.toLowerCase();
8
- return (lower.includes('secret') ||
9
- lower.includes('password') ||
10
- lower.includes('token') ||
11
- lower.includes('key'));
12
- }
13
- /** Recursively redact sensitive values in an object. */
14
- function redactSensitive(obj) {
15
- if (typeof obj !== 'object' || obj === null)
16
- return obj;
17
- if (Array.isArray(obj))
18
- return obj.map(redactSensitive);
19
- const result = {};
20
- for (const [k, v] of Object.entries(obj)) {
21
- result[k] = isSensitiveKey(k) && typeof v === 'string' ? '***' : redactSensitive(v);
22
- }
23
- return result;
24
- }
25
- export function makeProjectCommand() {
26
- const cmd = new Command('project').description('Project information and configuration');
27
- cmd
28
- .command('create <parentPath> <name>')
29
- .description('Create a new TerraStudio project directory')
30
- .option('--providers <providers...>', 'Active providers (default: azurerm)')
31
- .option('--location <location>', 'Default Azure location (default: eastus)')
32
- .option('--rg <resourceGroupName>', 'Default resource group name')
33
- .action(async (parentPath, name, options) => {
34
- const stored = await storage.createProject(name, parentPath);
35
- // Apply any option overrides to the saved config
36
- if (options.providers || options.location || options.rg) {
37
- const config = stored.metadata.projectConfig;
38
- if (options.providers)
39
- config['activeProviders'] = options.providers;
40
- if (options.location)
41
- config['location'] = options.location;
42
- if (options.rg)
43
- config['resourceGroupName'] = options.rg;
44
- await storage.saveProjectConfig(stored.path, config);
45
- }
46
- console.log(`Created project "${name}" at: ${stored.path}`);
47
- const providers = (options.providers ?? ['azurerm']).join(', ');
48
- console.log(`Providers: ${providers}`);
49
- });
50
- cmd
51
- .command('info [path]')
52
- .description('Show project metadata')
53
- .action(async (projectPath) => {
54
- const resolved = resolveProjectPath(projectPath);
55
- const stored = await storage.loadProject(resolved);
56
- const project = Project.fromLoaded(toLoadedProject(stored));
57
- console.log(`Name: ${project.name}`);
58
- console.log(`Version: ${project.version}`);
59
- console.log(`Path: ${project.path}`);
60
- const providers = project.projectConfig.activeProviders?.join(', ') ?? 'azurerm';
61
- console.log(`Providers: ${providers}`);
62
- console.log(`Nodes: ${project.nodes.length}`);
63
- console.log(`Edges: ${project.edges.length}`);
64
- });
65
- cmd
66
- .command('config [path]')
67
- .description('Print project config as JSON (sensitive values redacted)')
68
- .action(async (projectPath) => {
69
- const resolved = resolveProjectPath(projectPath);
70
- const stored = await storage.loadProject(resolved);
71
- const project = Project.fromLoaded(toLoadedProject(stored));
72
- const redacted = redactSensitive(project.projectConfig);
73
- console.log(JSON.stringify(redacted, null, 2));
74
- });
75
- cmd
76
- .command('config-set [path]')
77
- .description('Update project config fields')
78
- .option('--naming-convention <value>', 'Naming convention as a JSON string (e.g. \'{"enabled":true,"template":"{type}-{env}-{name}","env":"dev"}\')')
79
- .option('--layout-algorithm <value>', 'Layout algorithm (dagre or hybrid)')
80
- .option('--providers <providers...>', 'Active providers (space-separated)')
81
- .option('--variable <key=value>', 'Set a variable value (e.g. --variable location=eastus). Repeat for multiple variables.', (val, acc) => [...acc, val], [])
82
- .action(async (projectPath, options) => {
83
- const resolved = resolveProjectPath(projectPath);
84
- const stored = await storage.loadProject(resolved);
85
- const project = Project.fromLoaded(toLoadedProject(stored));
86
- if (options.namingConvention !== undefined) {
87
- let parsed;
88
- try {
89
- parsed = JSON.parse(options.namingConvention);
90
- }
91
- catch {
92
- console.error('--naming-convention must be a valid JSON string');
93
- process.exit(1);
94
- }
95
- project.projectConfig = {
96
- ...project.projectConfig,
97
- namingConvention: parsed,
98
- };
99
- }
100
- if (options.layoutAlgorithm !== undefined) {
101
- const algo = options.layoutAlgorithm;
102
- project.projectConfig = {
103
- ...project.projectConfig,
104
- layoutAlgorithm: algo,
105
- };
106
- }
107
- if (options.providers !== undefined) {
108
- project.projectConfig = {
109
- ...project.projectConfig,
110
- activeProviders: options.providers,
111
- };
112
- }
113
- if (options.variable.length > 0) {
114
- const variableValues = {
115
- ...(project.projectConfig.variableValues ?? {}),
116
- };
117
- for (const entry of options.variable) {
118
- const eq = entry.indexOf('=');
119
- if (eq === -1) {
120
- console.error(`Invalid --variable format (expected key=value): ${entry}`);
121
- process.exit(1);
122
- }
123
- const key = entry.slice(0, eq);
124
- const value = entry.slice(eq + 1);
125
- variableValues[key] = value;
126
- }
127
- project.projectConfig = {
128
- ...project.projectConfig,
129
- variableValues,
130
- };
131
- }
132
- await storage.saveProjectConfig(resolved, project.projectConfig);
133
- console.log('Project config updated.');
134
- });
135
- return cmd;
136
- }
137
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function makeResourceCommand(): Command;
3
- //# sourceMappingURL=resource.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/commands/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,mBAAmB,IAAI,OAAO,CAuc7C"}
@@ -1,366 +0,0 @@
1
- import { Command } from 'commander';
2
- import { storage, loadValidator, toLoadedProject } from '../platform/node-io.js';
3
- import { Project } from '@terrastudio/project';
4
- import { generateNodeId, generateUniqueTerraformName } from '@terrastudio/core';
5
- import { resolveProjectPath } from '../platform/resolve-project.js';
6
- function printWarnings(warnings) {
7
- for (const w of warnings) {
8
- console.warn(` ⚠ ${w}`);
9
- }
10
- }
11
- export function makeResourceCommand() {
12
- const cmd = new Command('resource').description('Manage diagram resources');
13
- cmd
14
- .command('list [path]')
15
- .description('List all resources in the project diagram')
16
- .option('-t, --type <typeId>', 'Filter by resource type ID')
17
- .action(async (projectPath, options) => {
18
- const resolved = resolveProjectPath(projectPath);
19
- const stored = await storage.loadProject(resolved);
20
- const project = Project.fromLoaded(toLoadedProject(stored));
21
- let nodes = project.nodes.filter((n) => n.type && !n.type.startsWith('_') && n.data.typeId);
22
- if (options.type) {
23
- nodes = nodes.filter((n) => n.data.typeId === options.type);
24
- }
25
- if (nodes.length === 0) {
26
- console.log('No resources found.');
27
- return;
28
- }
29
- const colId = 'ID'.padEnd(36);
30
- const colType = 'Type'.padEnd(40);
31
- const colName = 'Terraform Name';
32
- console.log(`${colId} ${colType} ${colName}`);
33
- console.log(`${'-'.repeat(36)} ${'-'.repeat(40)} ${'-'.repeat(30)}`);
34
- for (const node of nodes) {
35
- const id = node.id.padEnd(36);
36
- const type = (node.data.typeId ?? node.type ?? '').padEnd(40);
37
- const name = node.data.terraformName ?? node.data.label ?? '(unnamed)';
38
- console.log(`${id} ${type} ${name}`);
39
- }
40
- });
41
- cmd
42
- .command('add [path] <typeId> <terraformName>')
43
- .description('Add a new resource to the diagram')
44
- .option('-p, --parent <parentId>', 'Parent node ID (for contained resources)')
45
- .action(async (projectPath, typeId, terraformName, options) => {
46
- const resolved = resolveProjectPath(projectPath);
47
- const stored = await storage.loadProject(resolved);
48
- const project = Project.fromLoaded(toLoadedProject(stored));
49
- if (options.parent && !project.getNode(options.parent)) {
50
- console.error(`Parent node not found: ${options.parent}`);
51
- process.exit(1);
52
- }
53
- const providers = (project.projectConfig.activeProviders ?? ['azurerm']);
54
- project.validator = await loadValidator(providers);
55
- const resolvedTypeId = typeId;
56
- const id = generateNodeId(resolvedTypeId);
57
- const node = {
58
- id,
59
- type: typeId,
60
- position: { x: 100, y: 100 },
61
- data: {
62
- typeId: resolvedTypeId,
63
- label: terraformName,
64
- terraformName,
65
- properties: {},
66
- references: {},
67
- validationErrors: [],
68
- enabledOutputs: [],
69
- },
70
- ...(options.parent ? { parentId: options.parent } : {}),
71
- };
72
- const { warnings } = project.addNode(node);
73
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
74
- console.log(`Added ${typeId} "${terraformName}" (${id})`);
75
- printWarnings(warnings);
76
- });
77
- cmd
78
- .command('update [path] <nodeId>')
79
- .description('Update a resource property, label, or terraform name')
80
- .option('-k, --key <key>', 'Property key to update (in data.properties)')
81
- .option('-v, --value <value>', 'New property value')
82
- .option('--label <label>', 'Update the display label')
83
- .option('--terraform-name <name>', 'Update the Terraform resource name')
84
- .action(async (projectPath, nodeId, options) => {
85
- if (options.key !== undefined && options.value === undefined) {
86
- console.error('--value is required when --key is specified');
87
- process.exit(1);
88
- }
89
- if (options.value !== undefined && options.key === undefined) {
90
- console.error('--key is required when --value is specified');
91
- process.exit(1);
92
- }
93
- if (!options.key && !options.label && !options.terraformName) {
94
- console.error('Specify at least one of: --key/--value, --label, --terraform-name');
95
- process.exit(1);
96
- }
97
- const resolved = resolveProjectPath(projectPath);
98
- const stored = await storage.loadProject(resolved);
99
- const project = Project.fromLoaded(toLoadedProject(stored));
100
- const node = project.getNode(nodeId);
101
- if (!node) {
102
- console.error(`Node not found: ${nodeId}`);
103
- process.exit(1);
104
- }
105
- const dataUpdate = { ...node.data };
106
- if (options.key && options.value !== undefined) {
107
- dataUpdate.properties = { ...node.data.properties, [options.key]: options.value };
108
- }
109
- if (options.label !== undefined)
110
- dataUpdate.label = options.label;
111
- if (options.terraformName !== undefined)
112
- dataUpdate.terraformName = options.terraformName;
113
- project.updateNode(nodeId, { data: dataUpdate });
114
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
115
- const changes = [];
116
- if (options.key)
117
- changes.push(`${options.key} = ${options.value}`);
118
- if (options.label)
119
- changes.push(`label = "${options.label}"`);
120
- if (options.terraformName)
121
- changes.push(`terraformName = "${options.terraformName}"`);
122
- console.log(`Updated ${nodeId}: ${changes.join(', ')}`);
123
- });
124
- cmd
125
- .command('rename [path] <nodeId> <terraformName>')
126
- .description('Rename a resource (updates both label and terraform name)')
127
- .option('--label <label>', 'Override the display label (defaults to terraformName)')
128
- .action(async (projectPath, nodeId, terraformName, options) => {
129
- const resolved = resolveProjectPath(projectPath);
130
- const stored = await storage.loadProject(resolved);
131
- const project = Project.fromLoaded(toLoadedProject(stored));
132
- const node = project.getNode(nodeId);
133
- if (!node) {
134
- console.error(`Node not found: ${nodeId}`);
135
- process.exit(1);
136
- }
137
- const label = options.label ?? terraformName;
138
- project.updateNode(nodeId, {
139
- data: { ...node.data, terraformName, label },
140
- });
141
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
142
- console.log(`Renamed ${nodeId}: "${node.data.terraformName}" → "${terraformName}"`);
143
- });
144
- cmd
145
- .command('duplicate [path] <nodeId>')
146
- .description('Duplicate a resource (new ID, unique terraform name, offset position)')
147
- .option('--terraform-name <name>', 'Override the terraform name of the duplicate')
148
- .action(async (projectPath, nodeId, options) => {
149
- const resolved = resolveProjectPath(projectPath);
150
- const stored = await storage.loadProject(resolved);
151
- const project = Project.fromLoaded(toLoadedProject(stored));
152
- const node = project.getNode(nodeId);
153
- if (!node) {
154
- console.error(`Node not found: ${nodeId}`);
155
- process.exit(1);
156
- }
157
- const providers = (project.projectConfig.activeProviders ?? ['azurerm']);
158
- project.validator = await loadValidator(providers);
159
- // Generate unique terraform name
160
- const existingNames = new Set(project.nodes.map((n) => n.data.terraformName).filter(Boolean));
161
- const baseName = options.terraformName ?? (node.data.terraformName ?? 'resource');
162
- const newTerraformName = generateUniqueTerraformName(baseName, existingNames);
163
- const newId = generateNodeId((node.type ?? 'resource'));
164
- const duplicate = {
165
- ...node,
166
- id: newId,
167
- position: { x: node.position.x + 40, y: node.position.y + 40 },
168
- data: {
169
- ...node.data,
170
- terraformName: newTerraformName,
171
- label: newTerraformName,
172
- validationErrors: [],
173
- },
174
- };
175
- const { warnings } = project.addNode(duplicate);
176
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
177
- console.log(`Duplicated ${nodeId} → ${newId} ("${newTerraformName}")`);
178
- printWarnings(warnings);
179
- });
180
- cmd
181
- .command('remove [path] <nodeId>')
182
- .description('Remove a resource from the diagram')
183
- .action(async (projectPath, nodeId) => {
184
- const resolved = resolveProjectPath(projectPath);
185
- const stored = await storage.loadProject(resolved);
186
- const project = Project.fromLoaded(toLoadedProject(stored));
187
- const node = project.getNode(nodeId);
188
- if (!node) {
189
- console.error(`Node not found: ${nodeId}`);
190
- process.exit(1);
191
- }
192
- const children = project.getChildren(nodeId);
193
- if (children.length > 0) {
194
- console.error(`Cannot remove: node has ${children.length} child resource(s). Remove them first.`);
195
- process.exit(1);
196
- }
197
- const name = node.data.terraformName ?? node.data.label ?? nodeId;
198
- project.removeNode(nodeId);
199
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
200
- console.log(`Removed resource: ${name} (${nodeId})`);
201
- });
202
- cmd
203
- .command('connect [path] <sourceId> <targetId>')
204
- .description('Add an edge between two nodes')
205
- .option('--source-handle <handle>', 'Source handle ID')
206
- .option('--target-handle <handle>', 'Target handle ID')
207
- .option('--label <label>', 'Edge label')
208
- .action(async (projectPath, sourceId, targetId, options) => {
209
- const resolved = resolveProjectPath(projectPath);
210
- const stored = await storage.loadProject(resolved);
211
- const project = Project.fromLoaded(toLoadedProject(stored));
212
- if (!project.getNode(sourceId)) {
213
- console.error(`Source node not found: ${sourceId}`);
214
- process.exit(1);
215
- }
216
- if (!project.getNode(targetId)) {
217
- console.error(`Target node not found: ${targetId}`);
218
- process.exit(1);
219
- }
220
- const providers = (project.projectConfig.activeProviders ?? ['azurerm']);
221
- project.validator = await loadValidator(providers);
222
- const sourceHandle = options.sourceHandle ?? 'default';
223
- const targetHandle = options.targetHandle ?? 'default';
224
- const edgeId = `e-${sourceId}-${sourceHandle}-${targetId}-${targetHandle}`;
225
- const edge = {
226
- id: edgeId,
227
- source: sourceId,
228
- target: targetId,
229
- ...(options.sourceHandle ? { sourceHandle: options.sourceHandle } : {}),
230
- ...(options.targetHandle ? { targetHandle: options.targetHandle } : {}),
231
- data: {
232
- category: 'structural',
233
- ...(options.label ? { label: options.label } : {}),
234
- },
235
- };
236
- const { warnings } = project.addEdge(edge);
237
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
238
- console.log(`Connected ${sourceId} -> ${targetId} (${edgeId})`);
239
- printWarnings(warnings);
240
- });
241
- cmd
242
- .command('disconnect [path] <edgeId>')
243
- .description('Remove an edge by ID')
244
- .action(async (projectPath, edgeId) => {
245
- const resolved = resolveProjectPath(projectPath);
246
- const stored = await storage.loadProject(resolved);
247
- const project = Project.fromLoaded(toLoadedProject(stored));
248
- const edge = project.edges.find((e) => e.id === edgeId);
249
- if (!edge) {
250
- console.error(`Edge not found: ${edgeId}`);
251
- process.exit(1);
252
- }
253
- project.removeEdge(edgeId);
254
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
255
- console.log(`Removed edge: ${edgeId}`);
256
- });
257
- cmd
258
- .command('move [path] <nodeId>')
259
- .description('Move a node to a new position')
260
- .option('--x <x>', 'X coordinate')
261
- .option('--y <y>', 'Y coordinate')
262
- .option('--parent <parentId>', 'New parent node ID (use empty string to unparent)')
263
- .action(async (projectPath, nodeId, options) => {
264
- const resolved = resolveProjectPath(projectPath);
265
- const stored = await storage.loadProject(resolved);
266
- const project = Project.fromLoaded(toLoadedProject(stored));
267
- const node = project.getNode(nodeId);
268
- if (!node) {
269
- console.error(`Node not found: ${nodeId}`);
270
- process.exit(1);
271
- }
272
- const x = options.x !== undefined ? Number(options.x) : node.position.x;
273
- const y = options.y !== undefined ? Number(options.y) : node.position.y;
274
- // parent option: undefined = don't change, '' = unparent, otherwise set to value
275
- let parentArg = undefined;
276
- if (options.parent !== undefined) {
277
- parentArg = options.parent === '' ? null : options.parent;
278
- }
279
- if (parentArg !== undefined && parentArg !== null && !project.getNode(parentArg)) {
280
- console.error(`Parent node not found: ${parentArg}`);
281
- process.exit(1);
282
- }
283
- const providers = (project.projectConfig.activeProviders ?? ['azurerm']);
284
- project.validator = await loadValidator(providers);
285
- const { warnings } = project.moveNode(nodeId, { x, y }, parentArg);
286
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
287
- console.log(`Moved node ${nodeId} to (${x}, ${y})`);
288
- printWarnings(warnings);
289
- });
290
- cmd
291
- .command('resize [path] <nodeId>')
292
- .description('Resize a node')
293
- .requiredOption('--width <width>', 'New width')
294
- .requiredOption('--height <height>', 'New height')
295
- .action(async (projectPath, nodeId, options) => {
296
- const resolved = resolveProjectPath(projectPath);
297
- const stored = await storage.loadProject(resolved);
298
- const project = Project.fromLoaded(toLoadedProject(stored));
299
- if (!project.getNode(nodeId)) {
300
- console.error(`Node not found: ${nodeId}`);
301
- process.exit(1);
302
- }
303
- const width = Number(options.width);
304
- const height = Number(options.height);
305
- project.resizeNode(nodeId, width, height);
306
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
307
- console.log(`Resized node ${nodeId} to ${width}x${height}`);
308
- });
309
- cmd
310
- .command('outputs [path] <nodeId>')
311
- .description('Enable specific output keys on a node')
312
- .option('--enable <keys...>', 'Output keys to enable (space-separated)')
313
- .action(async (projectPath, nodeId, options) => {
314
- const resolved = resolveProjectPath(projectPath);
315
- const stored = await storage.loadProject(resolved);
316
- const project = Project.fromLoaded(toLoadedProject(stored));
317
- const node = project.getNode(nodeId);
318
- if (!node) {
319
- console.error(`Node not found: ${nodeId}`);
320
- process.exit(1);
321
- }
322
- const enabledOutputs = options.enable ?? [];
323
- project.updateNode(nodeId, {
324
- data: {
325
- ...node.data,
326
- enabledOutputs,
327
- },
328
- });
329
- await storage.saveDiagram(resolved, project.toDiagramSnapshot());
330
- console.log(`Set enabled outputs for ${nodeId}: [${enabledOutputs.join(', ')}]`);
331
- });
332
- cmd
333
- .command('edges [path]')
334
- .description('List edges in the diagram')
335
- .option('--node <nodeId>', 'Filter edges connected to a specific node')
336
- .action(async (projectPath, options) => {
337
- const resolved = resolveProjectPath(projectPath);
338
- const stored = await storage.loadProject(resolved);
339
- const project = Project.fromLoaded(toLoadedProject(stored));
340
- let edges = project.edges;
341
- if (options.node) {
342
- edges = edges.filter((e) => e.source === options.node || e.target === options.node);
343
- }
344
- if (edges.length === 0) {
345
- console.log('No edges found.');
346
- return;
347
- }
348
- const colId = 'ID'.padEnd(50);
349
- const colSource = 'Source'.padEnd(36);
350
- const colTarget = 'Target'.padEnd(36);
351
- const colCat = 'Category'.padEnd(12);
352
- const colLabel = 'Label';
353
- console.log(`${colId} ${colSource} ${colTarget} ${colCat} ${colLabel}`);
354
- console.log(`${'-'.repeat(50)} ${'-'.repeat(36)} ${'-'.repeat(36)} ${'-'.repeat(12)} ${'-'.repeat(20)}`);
355
- for (const edge of edges) {
356
- const id = edge.id.padEnd(50);
357
- const source = edge.source.padEnd(36);
358
- const target = edge.target.padEnd(36);
359
- const category = (edge.data?.category ?? '').padEnd(12);
360
- const label = edge.data?.label ?? '';
361
- console.log(`${id} ${source} ${target} ${category} ${label}`);
362
- }
363
- });
364
- return cmd;
365
- }
366
- //# sourceMappingURL=resource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/commands/resource.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function makeTerraformCommand(): Command;
3
- //# sourceMappingURL=terraform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terraform.d.ts","sourceRoot":"","sources":["../../src/commands/terraform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,wBAAgB,oBAAoB,IAAI,OAAO,CAmK9C"}