@camunda8/cli 2.0.0-alpha.3 → 2.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,9 @@ A minimal-dependency CLI for Camunda 8 operations built on top of `@camunda8/orc
9
9
  - **Profile Management**: Store and manage multiple cluster configurations
10
10
  - **Camunda Modeler Integration**: Automatically import and use profiles from Camunda Modeler
11
11
  - **Plugin System**: Extend c8ctl with custom commands via npm packages
12
- - **Building Block Deployment**: Automatic prioritization of `*_bb-*` folders during deployment
12
+ - **Building Block Deployment**: Automatic prioritization of `*_bb-*` folders during deployment, marked with 🧱 in results
13
+ - **Process Application Support**: Resources in folders with `.process-application` file marked with 📦 in results
14
+ - **Enhanced Deployment Results**: Table view showing file paths, visual indicators, resource details, and versions
13
15
  - **Watch Mode**: Monitors a folder for changes to `*.{bpmn,dmn,form}` and auto-redeploys
14
16
  - **Flexible Output**: Switch between human-readable text and JSON output modes
15
17
 
@@ -101,6 +103,9 @@ c8ctl deploy ./my-process.bpmn
101
103
  # Deploy current directory
102
104
  c8ctl deploy
103
105
 
106
+ # Deploy from multiple paths
107
+ c8ctl deploy ./processes ./forms ./building-blocks
108
+
104
109
  # Watch mode (using alias 'w')
105
110
  c8ctl w
106
111
  c8ctl watch
@@ -272,7 +277,7 @@ Debug output is written to stderr with timestamps and won't interfere with norma
272
277
 
273
278
  ### Plugin Management
274
279
 
275
- c8ctl supports a plugin system that allows extending the CLI with custom commands via npm packages.
280
+ c8ctl supports a plugin system that allows extending the CLI with custom commands via npm packages. Plugins are tracked in a registry file (`~/.config/c8ctl/plugins.json` on Linux, similar locations on other platforms) for persistence across npm operations.
276
281
 
277
282
  ```bash
278
283
  # Load a plugin from npm registry
@@ -287,13 +292,27 @@ c8ctl load plugin --from git://github.com/user/repo.git
287
292
  # Unload a plugin (wraps npm uninstall)
288
293
  c8ctl unload plugin <package-name>
289
294
 
290
- # List installed plugins
295
+ # List installed plugins (shows sync status)
291
296
  c8ctl list plugins
292
297
 
298
+ # Synchronize plugins from registry
299
+ # - First tries npm rebuild for installed plugins
300
+ # - Falls back to fresh npm install if rebuild fails
301
+ c8ctl sync plugins
302
+
293
303
  # View help including plugin commands
294
304
  c8ctl help
295
305
  ```
296
306
 
307
+ **Plugin Registry:**
308
+ - Plugins are tracked independently of `package.json` in a registry file
309
+ - The registry serves as the source of truth (local precedence)
310
+ - `c8ctl list plugins` shows sync status:
311
+ - `✓ Installed` - Plugin is in registry and installed
312
+ - `⚠ Not installed` - Plugin is in registry but not in node_modules (run `sync`)
313
+ - `⚠ Not in registry` - Plugin is in package.json but not tracked in registry
314
+ - `c8ctl sync plugins` synchronizes plugins from the registry, rebuilding or reinstalling as needed
315
+
297
316
  **Plugin Requirements:**
298
317
  - Plugin packages must be regular Node.js modules
299
318
  - They must include a `c8ctl-plugin.js` or `c8ctl-plugin.ts` file in the root directory
@@ -431,13 +450,14 @@ c8ctl <command>
431
450
 
432
451
  Configuration is stored in platform-specific user data directories:
433
452
 
434
- - **Linux**: `~/.local/share/c8ctl/`
453
+ - **Linux**: `~/.config/c8ctl/`
435
454
  - **macOS**: `~/Library/Application Support/c8ctl/`
436
455
  - **Windows**: `%APPDATA%\c8ctl\`
437
456
 
438
457
  Files:
439
458
  - `profiles.json`: Saved cluster configurations
440
459
  - `session.json`: Active profile, tenant, and output mode
460
+ - `plugins.json`: Plugin registry tracking installed plugins
441
461
 
442
462
  ### Camunda Modeler Configuration
443
463
 
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwIH;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GhB"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgMH;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+KhB"}
@@ -5,8 +5,9 @@ import { getLogger } from "../logger.js";
5
5
  import { createClient } from "../client.js";
6
6
  import { resolveTenantId } from "../config.js";
7
7
  import { readFileSync, readdirSync, statSync, existsSync } from 'node:fs';
8
- import { join, dirname, extname, basename } from 'node:path';
8
+ import { join, dirname, extname, basename, relative } from 'node:path';
9
9
  const RESOURCE_EXTENSIONS = ['.bpmn', '.dmn', '.form'];
10
+ const PROCESS_APPLICATION_FILE = '.process-application';
10
11
  /**
11
12
  * Extract process/decision IDs from BPMN/DMN files to detect duplicates
12
13
  */
@@ -34,23 +35,65 @@ function extractDefinitionId(content, extension) {
34
35
  function isBuildingBlockFolder(path) {
35
36
  return basename(path).includes('_bb-');
36
37
  }
38
+ /**
39
+ * Check if a directory contains a .process-application file
40
+ */
41
+ function hasProcessApplicationFile(dirPath) {
42
+ const paFilePath = join(dirPath, PROCESS_APPLICATION_FILE);
43
+ return existsSync(paFilePath);
44
+ }
45
+ /**
46
+ * Find the root building block or process application folder by traversing up the path
47
+ * Returns the path to the group root, or null if not in a group
48
+ */
49
+ function findGroupRoot(filePath, basePath) {
50
+ let currentDir = dirname(filePath);
51
+ // Traverse up the directory tree until we reach or go outside basePath
52
+ while (true) {
53
+ // Check if we've gone outside the basePath
54
+ const rel = relative(basePath, currentDir);
55
+ if (rel.startsWith('..') || rel === '') {
56
+ break;
57
+ }
58
+ // Check if this directory is a building block
59
+ if (isBuildingBlockFolder(currentDir)) {
60
+ return { type: 'bb', root: currentDir };
61
+ }
62
+ // Check if this directory has a .process-application file
63
+ if (hasProcessApplicationFile(currentDir)) {
64
+ return { type: 'pa', root: currentDir };
65
+ }
66
+ // Move up one level
67
+ const parentDir = dirname(currentDir);
68
+ if (parentDir === currentDir)
69
+ break; // Reached filesystem root
70
+ currentDir = parentDir;
71
+ }
72
+ return { type: null, root: null };
73
+ }
37
74
  /**
38
75
  * Recursively collect resource files from a directory
39
76
  */
40
- function collectResourceFiles(dirPath, collected = []) {
77
+ function collectResourceFiles(dirPath, collected = [], basePath) {
41
78
  if (!existsSync(dirPath)) {
42
79
  return collected;
43
80
  }
81
+ // Set basePath to dirPath on first call
82
+ if (!basePath) {
83
+ basePath = dirPath;
84
+ }
44
85
  const stat = statSync(dirPath);
45
86
  if (stat.isFile()) {
46
87
  const ext = extname(dirPath);
47
88
  if (RESOURCE_EXTENSIONS.includes(ext)) {
48
- const parentDir = dirname(dirPath);
89
+ const groupInfo = findGroupRoot(dirPath, basePath);
49
90
  collected.push({
50
91
  path: dirPath,
51
92
  name: basename(dirPath),
52
93
  content: readFileSync(dirPath),
53
- isBuildingBlock: isBuildingBlockFolder(parentDir),
94
+ isBuildingBlock: groupInfo.type === 'bb',
95
+ isProcessApplication: groupInfo.type === 'pa',
96
+ groupPath: groupInfo.root || undefined,
54
97
  });
55
98
  }
56
99
  return collected;
@@ -80,21 +123,24 @@ function collectResourceFiles(dirPath, collected = []) {
80
123
  files.forEach(file => {
81
124
  const ext = extname(file);
82
125
  if (RESOURCE_EXTENSIONS.includes(ext)) {
126
+ const groupInfo = findGroupRoot(file, basePath);
83
127
  collected.push({
84
128
  path: file,
85
129
  name: basename(file),
86
130
  content: readFileSync(file),
87
- isBuildingBlock: isBuildingBlockFolder(dirPath),
131
+ isBuildingBlock: groupInfo.type === 'bb',
132
+ isProcessApplication: groupInfo.type === 'pa',
133
+ groupPath: groupInfo.root || undefined,
88
134
  });
89
135
  }
90
136
  });
91
137
  // Process building block folders first (prioritized)
92
138
  bbFolders.forEach(bbFolder => {
93
- collectResourceFiles(bbFolder, collected);
139
+ collectResourceFiles(bbFolder, collected, basePath);
94
140
  });
95
141
  // Then process regular folders
96
142
  regularFolders.forEach(regularFolder => {
97
- collectResourceFiles(regularFolder, collected);
143
+ collectResourceFiles(regularFolder, collected, basePath);
98
144
  });
99
145
  }
100
146
  return collected;
@@ -121,8 +167,10 @@ export async function deploy(paths, options) {
121
167
  const logger = getLogger();
122
168
  const client = createClient(options.profile);
123
169
  const tenantId = resolveTenantId(options.profile);
170
+ const resources = [];
124
171
  try {
125
- const resources = [];
172
+ // Store the base paths for relative path calculation
173
+ const basePaths = paths.length === 0 ? [process.cwd()] : paths;
126
174
  if (paths.length === 0) {
127
175
  logger.error('No paths provided. Use: c8 deploy <path> or c8 deploy (for current directory)');
128
176
  process.exit(1);
@@ -135,12 +183,42 @@ export async function deploy(paths, options) {
135
183
  logger.error('No BPMN/DMN/Form files found in the specified paths');
136
184
  process.exit(1);
137
185
  }
138
- // Sort: building blocks first, then by path
186
+ // Calculate relative paths for display
187
+ const basePath = basePaths.length === 1 ? basePaths[0] : process.cwd();
188
+ resources.forEach(r => {
189
+ r.relativePath = relative(basePath, r.path) || r.name;
190
+ });
191
+ // Sort: group resources by their group, with building blocks first, then process applications, then standalone
139
192
  resources.sort((a, b) => {
193
+ // Building blocks have highest priority
140
194
  if (a.isBuildingBlock && !b.isBuildingBlock)
141
195
  return -1;
142
196
  if (!a.isBuildingBlock && b.isBuildingBlock)
143
197
  return 1;
198
+ // Within building blocks, group by groupPath
199
+ if (a.isBuildingBlock && b.isBuildingBlock) {
200
+ if (a.groupPath && b.groupPath) {
201
+ const groupCompare = a.groupPath.localeCompare(b.groupPath);
202
+ if (groupCompare !== 0)
203
+ return groupCompare;
204
+ }
205
+ return a.path.localeCompare(b.path);
206
+ }
207
+ // Process applications come next
208
+ if (a.isProcessApplication && !b.isProcessApplication)
209
+ return -1;
210
+ if (!a.isProcessApplication && b.isProcessApplication)
211
+ return 1;
212
+ // Within process applications, group by groupPath
213
+ if (a.isProcessApplication && b.isProcessApplication) {
214
+ if (a.groupPath && b.groupPath) {
215
+ const groupCompare = a.groupPath.localeCompare(b.groupPath);
216
+ if (groupCompare !== 0)
217
+ return groupCompare;
218
+ }
219
+ return a.path.localeCompare(b.path);
220
+ }
221
+ // Finally, standalone resources sorted by path
144
222
  return a.path.localeCompare(b.path);
145
223
  });
146
224
  // Validate for duplicate process/decision IDs
@@ -153,6 +231,23 @@ export async function deploy(paths, options) {
153
231
  process.exit(1);
154
232
  }
155
233
  logger.info(`Deploying ${resources.length} resource(s)...`);
234
+ // Create a mapping from definition ID to resource file for later reference
235
+ const definitionIdToResource = new Map();
236
+ const formNameToResource = new Map();
237
+ resources.forEach(r => {
238
+ const ext = extname(r.path);
239
+ if (ext === '.bpmn' || ext === '.dmn') {
240
+ const defId = extractDefinitionId(r.content, ext);
241
+ if (defId) {
242
+ definitionIdToResource.set(defId, r);
243
+ }
244
+ }
245
+ else if (ext === '.form') {
246
+ // Forms are matched by filename (without extension)
247
+ const formId = basename(r.name, '.form');
248
+ formNameToResource.set(formId, r);
249
+ }
250
+ });
156
251
  // Create deployment request - convert buffers to File objects with proper MIME types
157
252
  const result = await client.createDeployment({
158
253
  tenantId,
@@ -168,55 +263,200 @@ export async function deploy(paths, options) {
168
263
  }),
169
264
  });
170
265
  logger.success('Deployment successful', result.deploymentKey.toString());
171
- // Display deployed resources
172
- const tableData = [];
173
- result.processes.forEach(proc => {
174
- tableData.push({
175
- Type: 'Process',
176
- ID: proc.processDefinitionId,
177
- Version: proc.processDefinitionVersion,
178
- Key: proc.processDefinitionKey.toString(),
179
- });
180
- });
181
- result.decisions.forEach(dec => {
182
- tableData.push({
183
- Type: 'Decision',
184
- ID: dec.decisionDefinitionId || '-',
185
- Version: dec.version ?? '-',
186
- Key: dec.decisionDefinitionKey?.toString() || '-',
187
- });
266
+ // Normalize all deployed resources into a common structure
267
+ const allResources = [
268
+ ...result.processes.map(proc => ({
269
+ type: 'Process',
270
+ id: proc.processDefinitionId,
271
+ version: proc.processDefinitionVersion,
272
+ key: proc.processDefinitionKey.toString(),
273
+ resource: definitionIdToResource.get(proc.processDefinitionId),
274
+ })),
275
+ ...result.decisions.map(dec => ({
276
+ type: 'Decision',
277
+ id: dec.decisionDefinitionId || '-',
278
+ version: dec.version ?? '-',
279
+ key: dec.decisionDefinitionKey?.toString() || '-',
280
+ resource: definitionIdToResource.get(dec.decisionDefinitionId || ''),
281
+ })),
282
+ ...result.forms.map(form => ({
283
+ type: 'Form',
284
+ id: form.formId || '-',
285
+ version: form.version ?? '-',
286
+ key: form.formKey?.toString() || '-',
287
+ resource: formNameToResource.get(form.formId || ''),
288
+ })),
289
+ ];
290
+ const tableData = allResources.map(({ type, id, version, key, resource }) => {
291
+ const fileDisplay = resource
292
+ ? `${resource.isBuildingBlock ? '🧱 ' : ''}${resource.isProcessApplication ? '📦 ' : ''}${resource.relativePath || resource.name}`
293
+ : '-';
294
+ // Extract directory path for grouping (e.g., "bla/_bb-building-block" or "pa")
295
+ const sortKey = resource?.relativePath
296
+ ? resource.relativePath.substring(0, resource.relativePath.lastIndexOf('/') + 1) || resource.relativePath
297
+ : 'zzz'; // Resources without paths go last
298
+ return {
299
+ File: fileDisplay,
300
+ Type: type,
301
+ ID: id,
302
+ Version: version,
303
+ Key: key,
304
+ sortKey,
305
+ };
188
306
  });
189
- result.forms.forEach(form => {
190
- tableData.push({
191
- Type: 'Form',
192
- ID: form.formId || '-',
193
- Version: form.version ?? '-',
194
- Key: form.formKey?.toString() || '-',
195
- });
307
+ // Sort by directory path (grouping), then by file name
308
+ tableData.sort((a, b) => {
309
+ if (a.sortKey !== b.sortKey) {
310
+ return a.sortKey.localeCompare(b.sortKey);
311
+ }
312
+ return a.File.localeCompare(b.File);
196
313
  });
197
- if (tableData.length > 0) {
198
- logger.table(tableData);
314
+ // Remove sortKey before displaying
315
+ const displayData = tableData.map(({ File, Type, ID, Version, Key }) => ({ File, Type, ID, Version, Key }));
316
+ if (displayData.length > 0) {
317
+ logger.table(displayData);
199
318
  }
200
319
  }
201
320
  catch (error) {
202
- // Log detailed error information
203
- if (error && typeof error === 'object') {
204
- const err = error;
205
- logger.error('Failed to deploy resources', error);
206
- if (err.response) {
207
- console.error('API Response:', err.response);
208
- }
209
- if (err.message) {
210
- console.error('Error message:', err.message);
211
- }
212
- if (err.cause) {
213
- console.error('Error cause:', err.cause);
321
+ handleDeploymentError(error, resources, logger);
322
+ }
323
+ }
324
+ /**
325
+ * Format and display deployment errors with actionable guidance
326
+ */
327
+ function handleDeploymentError(error, resources, logger) {
328
+ const raw = (error && typeof error === 'object') ? error : {};
329
+ // Try to interpret common transport/network issues first for actionable guidance
330
+ const deriveNetworkErrorTitle = (err) => {
331
+ const anyErr = err;
332
+ const code = typeof anyErr?.code === 'string'
333
+ ? anyErr.code
334
+ : (typeof anyErr?.cause?.code === 'string'
335
+ ? anyErr.cause.code
336
+ : undefined);
337
+ if (!code && typeof anyErr?.name === 'string') {
338
+ // Handle fetch/abort style errors
339
+ if (anyErr.name === 'AbortError') {
340
+ return 'Request to Camunda cluster timed out or was aborted. Please check your network connection and try again.';
214
341
  }
215
342
  }
343
+ switch (code) {
344
+ case 'ECONNREFUSED':
345
+ return 'Cannot connect to Camunda cluster (connection refused). Verify the endpoint URL and that the cluster is reachable.';
346
+ case 'ENOTFOUND':
347
+ return 'Cannot resolve Camunda cluster host. Check the cluster URL and your DNS/network configuration.';
348
+ case 'EHOSTUNREACH':
349
+ return 'Camunda cluster host is unreachable. Check VPN/proxy settings and your network connectivity.';
350
+ case 'ECONNRESET':
351
+ return 'Connection to Camunda cluster was reset. Retry the operation and check for intermittent network issues.';
352
+ case 'ETIMEDOUT':
353
+ return 'Request to Camunda cluster timed out. Check your network connection and consider retrying.';
354
+ default:
355
+ return undefined;
356
+ }
357
+ };
358
+ // Extract RFC 9457 Problem Detail fields and other useful signals
359
+ const problemTitle = typeof raw.title === 'string' ? raw.title : undefined;
360
+ const networkTitle = deriveNetworkErrorTitle(error);
361
+ const errorInstanceTitle = error instanceof Error && typeof error.message === 'string' && error.message
362
+ ? error.message
363
+ : undefined;
364
+ const messageFieldTitle = typeof raw.message === 'string' ? raw.message : undefined;
365
+ const title = problemTitle ??
366
+ networkTitle ??
367
+ errorInstanceTitle ??
368
+ messageFieldTitle ??
369
+ 'Unknown error (unexpected error format; re-run with increased logging or check network configuration).';
370
+ const detail = typeof raw.detail === 'string' ? raw.detail : undefined;
371
+ const status = typeof raw.status === 'number' ? raw.status : undefined;
372
+ // Display the main error
373
+ logger.error('Deployment failed', new Error(title));
374
+ // Display the detailed error message if available
375
+ if (detail) {
376
+ console.error('\n' + formatDeploymentErrorDetail(detail));
377
+ }
378
+ // Provide actionable hints based on error type
379
+ console.error('');
380
+ printDeploymentHints(title, detail, status, resources);
381
+ process.exit(1);
382
+ }
383
+ /**
384
+ * Format the error detail for better readability
385
+ */
386
+ function formatDeploymentErrorDetail(detail) {
387
+ // The detail often contains embedded newlines, format them nicely
388
+ const lines = detail.split('\n').map(line => line.trim()).filter(Boolean);
389
+ // Find the main message and the file-specific errors
390
+ const result = [];
391
+ let inFileError = false;
392
+ for (const line of lines) {
393
+ if (line.startsWith("'") && (line.includes('.bpmn') || line.includes('.dmn') || line.includes('.form'))) {
394
+ // This is a file-specific error
395
+ inFileError = true;
396
+ result.push(` 📄 ${line}`);
397
+ }
398
+ else if (line.startsWith('- Element:')) {
399
+ result.push(` ${line}`);
400
+ }
401
+ else if (line.startsWith('- ERROR:') || line.startsWith('- WARNING:')) {
402
+ const icon = line.startsWith('- ERROR:') ? '❌' : '⚠️';
403
+ result.push(` ${icon} ${line.substring(2)}`);
404
+ }
405
+ else if (inFileError && line.startsWith('-')) {
406
+ result.push(` ${line}`);
407
+ }
216
408
  else {
217
- logger.error('Failed to deploy resources', error);
409
+ result.push(` ${line}`);
410
+ }
411
+ }
412
+ return result.join('\n');
413
+ }
414
+ /**
415
+ * Print actionable hints based on the error type
416
+ */
417
+ function printDeploymentHints(title, detail, status, resources) {
418
+ const hints = [];
419
+ if (title === 'INVALID_ARGUMENT') {
420
+ if (detail?.includes('Must reference a message')) {
421
+ hints.push('💡 A message start event or intermediate catch event is missing a message reference.');
422
+ hints.push(' Open the BPMN file in Camunda Modeler and configure the message name.');
423
+ }
424
+ if (detail?.includes('duplicate')) {
425
+ hints.push('💡 Resource IDs must be unique within a deployment.');
426
+ hints.push(' Check for duplicate process/decision IDs in your files.');
427
+ }
428
+ if (detail?.includes('parsing') || detail?.includes('syntax')) {
429
+ hints.push('💡 The resource file contains syntax errors.');
430
+ hints.push(' Validate the file in Camunda Modeler or check the XML/JSON structure.');
431
+ }
432
+ }
433
+ else if (title === 'RESOURCE_EXHAUSTED') {
434
+ hints.push('💡 The server is under heavy load (backpressure).');
435
+ hints.push(' Wait a moment and retry the deployment.');
436
+ }
437
+ else if (title === 'NOT_FOUND' || status === 404) {
438
+ hints.push('💡 The Camunda server could not be reached or the endpoint was not found.');
439
+ hints.push(' Check your connection settings with: c8 list profiles');
440
+ }
441
+ else if (title === 'UNAUTHENTICATED' || title === 'PERMISSION_DENIED' || status === 401 || status === 403) {
442
+ hints.push('💡 Authentication or authorization failed.');
443
+ hints.push(' Check your credentials and permissions for the current profile.');
444
+ }
445
+ else {
446
+ hints.push('💡 Review the error message above for specific issues.');
447
+ hints.push(' You may need to fix the resource files before deploying.');
448
+ }
449
+ // Show which files were being deployed
450
+ if (resources.length > 0) {
451
+ hints.push('');
452
+ hints.push(`📁 Resources attempted (${resources.length}):`);
453
+ resources.slice(0, 5).forEach(r => {
454
+ hints.push(` - ${r.relativePath || r.name}`);
455
+ });
456
+ if (resources.length > 5) {
457
+ hints.push(` ... and ${resources.length - 5} more`);
218
458
  }
219
- process.exit(1);
220
459
  }
460
+ hints.forEach(h => console.error(h));
221
461
  }
222
462
  //# sourceMappingURL=deployments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAwE/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA8BpD"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CA0E/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA+BpD"}
@@ -61,6 +61,7 @@ Commands:
61
61
  load plugin <name> Load a c8ctl plugin from npm registry
62
62
  load plugin --from Load a c8ctl plugin from URL (file://, https://, git://)
63
63
  unload plugin <name> Unload a c8ctl plugin (npm uninstall wrapper)
64
+ sync plugin Synchronize plugins from registry (rebuild/reinstall)
64
65
  use profile|tenant Set active profile or tenant
65
66
  output json|text Set output format
66
67
  completion bash|zsh|fish Generate shell completion script
@@ -94,6 +95,7 @@ Examples:
94
95
  c8ctl output json Switch to JSON output
95
96
  c8ctl load plugin my-plugin Load plugin from npm registry
96
97
  c8ctl load plugin --from file:///path/to/plugin Load plugin from file URL
98
+ c8ctl sync plugin Synchronize plugins
97
99
  c8ctl completion bash Generate bash completion script
98
100
  `.trim());
99
101
  }
@@ -117,6 +119,7 @@ export function showVerbResources(verb) {
117
119
  rm: 'profile',
118
120
  load: 'plugin',
119
121
  unload: 'plugin',
122
+ sync: 'plugin',
120
123
  use: 'profile, tenant',
121
124
  output: 'json, text',
122
125
  completion: 'bash, zsh, fish',
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
@@ -14,4 +14,9 @@ export declare function unloadPlugin(packageName: string): Promise<void>;
14
14
  * List installed plugins
15
15
  */
16
16
  export declare function listPlugins(): void;
17
+ /**
18
+ * Sync plugins - synchronize registry with actual installations
19
+ * Local (registry) has precedence over package.json
20
+ */
21
+ export declare function syncPlugins(): Promise<void>;
17
22
  //# sourceMappingURL=plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC5F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CA8ClC"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5F;AAsBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAgFlC;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGjD"}