@zincapp/znvault-cli 2.11.1 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/plugin.d.ts +8 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +548 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/index.js +30 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +21 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +59 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +5 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +63 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +221 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +69 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +4 -0
- package/dist/plugins/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Management Commands
|
|
3
|
+
*
|
|
4
|
+
* Commands for installing, uninstalling, and managing CLI plugins.
|
|
5
|
+
*/
|
|
6
|
+
import { type Command } from 'commander';
|
|
7
|
+
export declare function registerPluginCommands(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AA2MzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAic7D"}
|
|
@@ -0,0 +1,548 @@
|
|
|
1
|
+
// Path: znvault-cli/src/commands/plugin.ts
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Management Commands
|
|
4
|
+
*
|
|
5
|
+
* Commands for installing, uninstalling, and managing CLI plugins.
|
|
6
|
+
*/
|
|
7
|
+
import { execSync, spawn } from 'node:child_process';
|
|
8
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
|
|
9
|
+
import { join, dirname } from 'node:path';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import * as output from '../lib/output.js';
|
|
13
|
+
import { getPlugins, addPlugin, removePlugin, setPluginEnabled, getConfigPath, } from '../lib/config.js';
|
|
14
|
+
// ZincApp plugin namespace
|
|
15
|
+
const ZINCAPP_PREFIX = '@zincapp/znvault-plugin-';
|
|
16
|
+
/**
|
|
17
|
+
* Get the plugins directory path (alongside config.json)
|
|
18
|
+
*/
|
|
19
|
+
function getPluginsDir() {
|
|
20
|
+
const configPath = getConfigPath();
|
|
21
|
+
return join(dirname(configPath), 'plugins');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ensure plugins directory exists with package.json
|
|
25
|
+
*/
|
|
26
|
+
function ensurePluginsDir() {
|
|
27
|
+
const pluginsDir = getPluginsDir();
|
|
28
|
+
if (!existsSync(pluginsDir)) {
|
|
29
|
+
mkdirSync(pluginsDir, { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
const packageJsonPath = join(pluginsDir, 'package.json');
|
|
32
|
+
if (!existsSync(packageJsonPath)) {
|
|
33
|
+
writeFileSync(packageJsonPath, JSON.stringify({
|
|
34
|
+
name: 'znvault-plugins',
|
|
35
|
+
version: '1.0.0',
|
|
36
|
+
private: true,
|
|
37
|
+
description: 'ZNVault CLI plugins',
|
|
38
|
+
type: 'module',
|
|
39
|
+
}, null, 2));
|
|
40
|
+
}
|
|
41
|
+
return pluginsDir;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolve plugin name to full package name
|
|
45
|
+
* - "payara" -> "@zincapp/znvault-plugin-payara"
|
|
46
|
+
* - "@zincapp/znvault-plugin-payara" -> "@zincapp/znvault-plugin-payara"
|
|
47
|
+
* - "@other/plugin" -> "@other/plugin"
|
|
48
|
+
*/
|
|
49
|
+
function resolvePluginName(name) {
|
|
50
|
+
// Already a scoped or full package name
|
|
51
|
+
if (name.startsWith('@') || name.includes('/')) {
|
|
52
|
+
return name;
|
|
53
|
+
}
|
|
54
|
+
// Check if it's a simple name, prepend ZincApp prefix
|
|
55
|
+
return `${ZINCAPP_PREFIX}${name}`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get short name from full package name
|
|
59
|
+
*/
|
|
60
|
+
function getShortName(packageName) {
|
|
61
|
+
if (packageName.startsWith(ZINCAPP_PREFIX)) {
|
|
62
|
+
return packageName.slice(ZINCAPP_PREFIX.length);
|
|
63
|
+
}
|
|
64
|
+
return packageName;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if a package exists on npm
|
|
68
|
+
*/
|
|
69
|
+
async function packageExists(packageName) {
|
|
70
|
+
try {
|
|
71
|
+
execSync(`npm view ${packageName} version`, { stdio: 'pipe' });
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get package version from npm
|
|
80
|
+
*/
|
|
81
|
+
function getPackageVersion(packageName) {
|
|
82
|
+
try {
|
|
83
|
+
return execSync(`npm view ${packageName} version`, { stdio: 'pipe' }).toString().trim();
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get installed package version
|
|
91
|
+
*/
|
|
92
|
+
function getInstalledVersion(packageName, pluginsDir) {
|
|
93
|
+
try {
|
|
94
|
+
const packageJsonPath = join(pluginsDir, 'node_modules', packageName, 'package.json');
|
|
95
|
+
if (existsSync(packageJsonPath)) {
|
|
96
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
97
|
+
return pkg.version;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Ignore
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Run npm command in plugins directory
|
|
107
|
+
*/
|
|
108
|
+
function runNpm(args, pluginsDir) {
|
|
109
|
+
return new Promise((resolve) => {
|
|
110
|
+
const npm = spawn('npm', args, {
|
|
111
|
+
cwd: pluginsDir,
|
|
112
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
113
|
+
});
|
|
114
|
+
let stdout = '';
|
|
115
|
+
let stderr = '';
|
|
116
|
+
npm.stdout.on('data', (data) => {
|
|
117
|
+
stdout += data.toString();
|
|
118
|
+
});
|
|
119
|
+
npm.stderr.on('data', (data) => {
|
|
120
|
+
stderr += data.toString();
|
|
121
|
+
});
|
|
122
|
+
npm.on('close', (code) => {
|
|
123
|
+
resolve({
|
|
124
|
+
success: code === 0,
|
|
125
|
+
output: stdout + stderr,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
npm.on('error', (err) => {
|
|
129
|
+
resolve({
|
|
130
|
+
success: false,
|
|
131
|
+
output: err.message,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate that a package is a valid znvault CLI plugin
|
|
138
|
+
*/
|
|
139
|
+
async function validatePlugin(packageName, pluginsDir) {
|
|
140
|
+
try {
|
|
141
|
+
const packageJsonPath = join(pluginsDir, 'node_modules', packageName, 'package.json');
|
|
142
|
+
if (!existsSync(packageJsonPath)) {
|
|
143
|
+
return { valid: false, error: 'Package not found after installation' };
|
|
144
|
+
}
|
|
145
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
146
|
+
// Check for CLI plugin export
|
|
147
|
+
const hasCliExport = pkg.exports?.['./cli'] || pkg.main;
|
|
148
|
+
if (!hasCliExport) {
|
|
149
|
+
return { valid: false, error: 'Package does not export a CLI plugin' };
|
|
150
|
+
}
|
|
151
|
+
// Try to dynamically import and validate
|
|
152
|
+
try {
|
|
153
|
+
const modulePath = join(pluginsDir, 'node_modules', packageName);
|
|
154
|
+
const cliPath = pkg.exports?.['./cli']?.import || pkg.exports?.['./cli'] || './dist/cli.js';
|
|
155
|
+
const fullPath = join(modulePath, cliPath);
|
|
156
|
+
// Check if the CLI module exists
|
|
157
|
+
if (!existsSync(fullPath.replace(/\.js$/, '.js')) && !existsSync(fullPath)) {
|
|
158
|
+
// Try without ./cli export - main export might have createPayaraCLIPlugin
|
|
159
|
+
const mainPath = join(modulePath, pkg.exports?.['.']?.import || pkg.main || 'dist/index.js');
|
|
160
|
+
if (!existsSync(mainPath)) {
|
|
161
|
+
return { valid: false, error: 'CLI module not found' };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { valid: true };
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
return { valid: false, error: `Failed to validate plugin: ${err}` };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
return { valid: false, error: `Validation error: ${err}` };
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export function registerPluginCommands(program) {
|
|
175
|
+
const plugin = program
|
|
176
|
+
.command('plugin')
|
|
177
|
+
.description('Manage CLI plugins');
|
|
178
|
+
// ============================================================================
|
|
179
|
+
// plugin install <name>
|
|
180
|
+
// ============================================================================
|
|
181
|
+
plugin
|
|
182
|
+
.command('install <name>')
|
|
183
|
+
.alias('add')
|
|
184
|
+
.description('Install a CLI plugin')
|
|
185
|
+
.option('-f, --force', 'Force reinstall even if already installed')
|
|
186
|
+
.option('-g, --global', 'Install globally instead of in plugins directory')
|
|
187
|
+
.action(async (name, options) => {
|
|
188
|
+
const spinner = ora('Resolving plugin...').start();
|
|
189
|
+
try {
|
|
190
|
+
// Resolve plugin name
|
|
191
|
+
let packageName = resolvePluginName(name);
|
|
192
|
+
let foundWithPrefix = true;
|
|
193
|
+
// Check if @zincapp prefixed version exists
|
|
194
|
+
if (packageName.startsWith(ZINCAPP_PREFIX)) {
|
|
195
|
+
const exists = await packageExists(packageName);
|
|
196
|
+
if (!exists) {
|
|
197
|
+
// Try the original name directly
|
|
198
|
+
const directExists = await packageExists(name);
|
|
199
|
+
if (directExists) {
|
|
200
|
+
packageName = name;
|
|
201
|
+
foundWithPrefix = false;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
spinner.fail(`Plugin not found: ${packageName}`);
|
|
205
|
+
output.error(`Could not find '${packageName}' or '${name}' on npm.`);
|
|
206
|
+
console.log();
|
|
207
|
+
console.log('Available ZincApp plugins:');
|
|
208
|
+
console.log(` ${chalk.cyan('payara')} - Payara WAR deployment`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
spinner.text = `Installing ${packageName}...`;
|
|
214
|
+
// Check if already configured
|
|
215
|
+
const existingPlugins = getPlugins();
|
|
216
|
+
const alreadyConfigured = existingPlugins.some(p => p.package === packageName);
|
|
217
|
+
if (alreadyConfigured && !options.force) {
|
|
218
|
+
spinner.info(`Plugin ${chalk.cyan(getShortName(packageName))} is already installed.`);
|
|
219
|
+
console.log(`Use ${chalk.cyan('--force')} to reinstall.`);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// Ensure plugins directory
|
|
223
|
+
const pluginsDir = ensurePluginsDir();
|
|
224
|
+
// Install package
|
|
225
|
+
spinner.text = `Installing ${packageName}...`;
|
|
226
|
+
const installResult = await runNpm(['install', packageName], pluginsDir);
|
|
227
|
+
if (!installResult.success) {
|
|
228
|
+
spinner.fail(`Failed to install ${packageName}`);
|
|
229
|
+
output.error(installResult.output);
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
// Validate it's a valid plugin
|
|
233
|
+
spinner.text = 'Validating plugin...';
|
|
234
|
+
const validation = await validatePlugin(packageName, pluginsDir);
|
|
235
|
+
if (!validation.valid) {
|
|
236
|
+
spinner.fail(`Invalid plugin: ${validation.error}`);
|
|
237
|
+
// Uninstall the invalid package
|
|
238
|
+
await runNpm(['uninstall', packageName], pluginsDir);
|
|
239
|
+
output.error('The package was installed but is not a valid znvault CLI plugin.');
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
// Add to config
|
|
243
|
+
addPlugin({ package: packageName, enabled: true });
|
|
244
|
+
const version = getInstalledVersion(packageName, pluginsDir);
|
|
245
|
+
spinner.succeed(`Installed ${chalk.cyan(getShortName(packageName))}${version ? ` v${version}` : ''}`);
|
|
246
|
+
console.log();
|
|
247
|
+
console.log(chalk.dim('Plugin will be loaded on next command execution.'));
|
|
248
|
+
if (foundWithPrefix && name !== packageName) {
|
|
249
|
+
console.log(chalk.dim(`Resolved '${name}' to '${packageName}'`));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
spinner.fail('Installation failed');
|
|
254
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
255
|
+
process.exit(1);
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
// ============================================================================
|
|
259
|
+
// plugin uninstall <name>
|
|
260
|
+
// ============================================================================
|
|
261
|
+
plugin
|
|
262
|
+
.command('uninstall <name>')
|
|
263
|
+
.alias('remove')
|
|
264
|
+
.description('Uninstall a CLI plugin')
|
|
265
|
+
.action(async (name) => {
|
|
266
|
+
const spinner = ora('Uninstalling plugin...').start();
|
|
267
|
+
try {
|
|
268
|
+
// Resolve plugin name
|
|
269
|
+
const packageName = resolvePluginName(name);
|
|
270
|
+
// Check if configured
|
|
271
|
+
const plugins = getPlugins();
|
|
272
|
+
const found = plugins.find(p => p.package === packageName ||
|
|
273
|
+
p.package === name ||
|
|
274
|
+
getShortName(p.package ?? '') === name);
|
|
275
|
+
if (!found) {
|
|
276
|
+
spinner.fail(`Plugin not found: ${name}`);
|
|
277
|
+
output.error('Plugin is not installed. Use "znvault plugin list" to see installed plugins.');
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
const actualPackage = found.package;
|
|
281
|
+
// Remove from plugins directory
|
|
282
|
+
const pluginsDir = getPluginsDir();
|
|
283
|
+
if (existsSync(join(pluginsDir, 'node_modules', actualPackage))) {
|
|
284
|
+
spinner.text = `Removing ${actualPackage}...`;
|
|
285
|
+
const uninstallResult = await runNpm(['uninstall', actualPackage], pluginsDir);
|
|
286
|
+
if (!uninstallResult.success) {
|
|
287
|
+
spinner.warn('Failed to uninstall npm package, but removing from config...');
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// Remove from config
|
|
291
|
+
removePlugin(actualPackage);
|
|
292
|
+
spinner.succeed(`Uninstalled ${chalk.cyan(getShortName(actualPackage))}`);
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
spinner.fail('Uninstall failed');
|
|
296
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
// ============================================================================
|
|
301
|
+
// plugin list
|
|
302
|
+
// ============================================================================
|
|
303
|
+
plugin
|
|
304
|
+
.command('list')
|
|
305
|
+
.alias('ls')
|
|
306
|
+
.description('List installed plugins')
|
|
307
|
+
.option('--json', 'Output as JSON')
|
|
308
|
+
.action((options) => {
|
|
309
|
+
const plugins = getPlugins();
|
|
310
|
+
const pluginsDir = getPluginsDir();
|
|
311
|
+
if (plugins.length === 0) {
|
|
312
|
+
if (options.json) {
|
|
313
|
+
console.log(JSON.stringify([], null, 2));
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
console.log(chalk.dim('No plugins installed.'));
|
|
317
|
+
console.log();
|
|
318
|
+
console.log(`Install a plugin with: ${chalk.cyan('znvault plugin install <name>')}`);
|
|
319
|
+
console.log();
|
|
320
|
+
console.log('Available plugins:');
|
|
321
|
+
console.log(` ${chalk.cyan('payara')} - Payara WAR deployment`);
|
|
322
|
+
}
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
const pluginList = plugins.map(p => {
|
|
326
|
+
const packageName = p.package || p.path || 'unknown';
|
|
327
|
+
const shortName = getShortName(packageName);
|
|
328
|
+
const version = p.package ? getInstalledVersion(p.package, pluginsDir) : null;
|
|
329
|
+
const enabled = p.enabled !== false;
|
|
330
|
+
return {
|
|
331
|
+
name: shortName,
|
|
332
|
+
package: packageName,
|
|
333
|
+
version: version || 'unknown',
|
|
334
|
+
enabled,
|
|
335
|
+
source: p.path ? 'local' : 'npm',
|
|
336
|
+
};
|
|
337
|
+
});
|
|
338
|
+
if (options.json) {
|
|
339
|
+
console.log(JSON.stringify(pluginList, null, 2));
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
console.log(chalk.bold('Installed Plugins'));
|
|
343
|
+
console.log();
|
|
344
|
+
for (const p of pluginList) {
|
|
345
|
+
const status = p.enabled ? chalk.green('●') : chalk.gray('○');
|
|
346
|
+
const versionStr = chalk.dim(`v${p.version}`);
|
|
347
|
+
const disabledStr = p.enabled ? '' : chalk.yellow(' (disabled)');
|
|
348
|
+
console.log(` ${status} ${chalk.cyan(p.name)} ${versionStr}${disabledStr}`);
|
|
349
|
+
if (p.package !== p.name) {
|
|
350
|
+
console.log(` ${chalk.dim(p.package)}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
console.log();
|
|
354
|
+
console.log(chalk.dim(`Plugins directory: ${pluginsDir}`));
|
|
355
|
+
});
|
|
356
|
+
// ============================================================================
|
|
357
|
+
// plugin update [name]
|
|
358
|
+
// ============================================================================
|
|
359
|
+
plugin
|
|
360
|
+
.command('update [name]')
|
|
361
|
+
.alias('upgrade')
|
|
362
|
+
.description('Update plugins (all or specific)')
|
|
363
|
+
.action(async (name) => {
|
|
364
|
+
const plugins = getPlugins();
|
|
365
|
+
if (plugins.length === 0) {
|
|
366
|
+
console.log(chalk.dim('No plugins installed.'));
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const pluginsDir = getPluginsDir();
|
|
370
|
+
const spinner = ora('Checking for updates...').start();
|
|
371
|
+
try {
|
|
372
|
+
// Filter to specific plugin if name provided
|
|
373
|
+
let toUpdate = plugins.filter(p => p.package);
|
|
374
|
+
if (name) {
|
|
375
|
+
const packageName = resolvePluginName(name);
|
|
376
|
+
toUpdate = toUpdate.filter(p => p.package === packageName ||
|
|
377
|
+
p.package === name ||
|
|
378
|
+
getShortName(p.package ?? '') === name);
|
|
379
|
+
if (toUpdate.length === 0) {
|
|
380
|
+
spinner.fail(`Plugin not found: ${name}`);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const updates = [];
|
|
385
|
+
for (const p of toUpdate) {
|
|
386
|
+
const packageName = p.package;
|
|
387
|
+
const currentVersion = getInstalledVersion(packageName, pluginsDir);
|
|
388
|
+
const latestVersion = getPackageVersion(packageName);
|
|
389
|
+
if (currentVersion && latestVersion && currentVersion !== latestVersion) {
|
|
390
|
+
updates.push({
|
|
391
|
+
name: getShortName(packageName),
|
|
392
|
+
from: currentVersion,
|
|
393
|
+
to: latestVersion,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
if (updates.length === 0) {
|
|
398
|
+
spinner.succeed('All plugins are up to date.');
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
spinner.text = `Updating ${updates.length} plugin(s)...`;
|
|
402
|
+
// Update all at once
|
|
403
|
+
const packagesToUpdate = toUpdate.map(p => p.package);
|
|
404
|
+
const updateResult = await runNpm(['update', ...packagesToUpdate], pluginsDir);
|
|
405
|
+
if (!updateResult.success) {
|
|
406
|
+
spinner.fail('Update failed');
|
|
407
|
+
output.error(updateResult.output);
|
|
408
|
+
process.exit(1);
|
|
409
|
+
}
|
|
410
|
+
spinner.succeed('Plugins updated');
|
|
411
|
+
console.log();
|
|
412
|
+
for (const u of updates) {
|
|
413
|
+
console.log(` ${chalk.cyan(u.name)}: ${u.from} → ${chalk.green(u.to)}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
catch (err) {
|
|
417
|
+
spinner.fail('Update failed');
|
|
418
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
419
|
+
process.exit(1);
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
// ============================================================================
|
|
423
|
+
// plugin enable <name>
|
|
424
|
+
// ============================================================================
|
|
425
|
+
plugin
|
|
426
|
+
.command('enable <name>')
|
|
427
|
+
.description('Enable a disabled plugin')
|
|
428
|
+
.action((name) => {
|
|
429
|
+
const plugins = getPlugins();
|
|
430
|
+
const packageName = resolvePluginName(name);
|
|
431
|
+
const found = plugins.find(p => p.package === packageName ||
|
|
432
|
+
p.package === name ||
|
|
433
|
+
getShortName(p.package ?? '') === name);
|
|
434
|
+
if (!found) {
|
|
435
|
+
output.error(`Plugin not found: ${name}`);
|
|
436
|
+
console.log('Use "znvault plugin list" to see installed plugins.');
|
|
437
|
+
process.exit(1);
|
|
438
|
+
}
|
|
439
|
+
if (found.enabled !== false) {
|
|
440
|
+
console.log(`Plugin ${chalk.cyan(getShortName(found.package ?? name))} is already enabled.`);
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
setPluginEnabled(found.package ?? found.path ?? '', true);
|
|
444
|
+
output.success(`Enabled plugin: ${getShortName(found.package ?? name)}`);
|
|
445
|
+
});
|
|
446
|
+
// ============================================================================
|
|
447
|
+
// plugin disable <name>
|
|
448
|
+
// ============================================================================
|
|
449
|
+
plugin
|
|
450
|
+
.command('disable <name>')
|
|
451
|
+
.description('Disable a plugin without uninstalling')
|
|
452
|
+
.action((name) => {
|
|
453
|
+
const plugins = getPlugins();
|
|
454
|
+
const packageName = resolvePluginName(name);
|
|
455
|
+
const found = plugins.find(p => p.package === packageName ||
|
|
456
|
+
p.package === name ||
|
|
457
|
+
getShortName(p.package ?? '') === name);
|
|
458
|
+
if (!found) {
|
|
459
|
+
output.error(`Plugin not found: ${name}`);
|
|
460
|
+
console.log('Use "znvault plugin list" to see installed plugins.');
|
|
461
|
+
process.exit(1);
|
|
462
|
+
}
|
|
463
|
+
if (found.enabled === false) {
|
|
464
|
+
console.log(`Plugin ${chalk.cyan(getShortName(found.package ?? name))} is already disabled.`);
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
setPluginEnabled(found.package ?? found.path ?? '', false);
|
|
468
|
+
output.success(`Disabled plugin: ${getShortName(found.package ?? name)}`);
|
|
469
|
+
});
|
|
470
|
+
// ============================================================================
|
|
471
|
+
// plugin info <name>
|
|
472
|
+
// ============================================================================
|
|
473
|
+
plugin
|
|
474
|
+
.command('info <name>')
|
|
475
|
+
.description('Show plugin information')
|
|
476
|
+
.action(async (name) => {
|
|
477
|
+
const spinner = ora('Fetching plugin info...').start();
|
|
478
|
+
try {
|
|
479
|
+
const packageName = resolvePluginName(name);
|
|
480
|
+
const plugins = getPlugins();
|
|
481
|
+
const pluginsDir = getPluginsDir();
|
|
482
|
+
// Check if installed locally
|
|
483
|
+
const installed = plugins.find(p => p.package === packageName ||
|
|
484
|
+
p.package === name ||
|
|
485
|
+
getShortName(p.package ?? '') === name);
|
|
486
|
+
// Get npm info
|
|
487
|
+
let npmInfo = null;
|
|
488
|
+
try {
|
|
489
|
+
const infoStr = execSync(`npm view ${packageName} --json`, { stdio: 'pipe' }).toString();
|
|
490
|
+
npmInfo = JSON.parse(infoStr);
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
// Try without prefix
|
|
494
|
+
if (packageName !== name) {
|
|
495
|
+
try {
|
|
496
|
+
const infoStr = execSync(`npm view ${name} --json`, { stdio: 'pipe' }).toString();
|
|
497
|
+
npmInfo = JSON.parse(infoStr);
|
|
498
|
+
}
|
|
499
|
+
catch {
|
|
500
|
+
// Not found
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
spinner.stop();
|
|
505
|
+
if (!installed && !npmInfo) {
|
|
506
|
+
output.error(`Plugin not found: ${name}`);
|
|
507
|
+
process.exit(1);
|
|
508
|
+
}
|
|
509
|
+
console.log();
|
|
510
|
+
console.log(chalk.bold(getShortName(packageName)));
|
|
511
|
+
console.log();
|
|
512
|
+
if (npmInfo) {
|
|
513
|
+
console.log(` Package: ${chalk.cyan(packageName)}`);
|
|
514
|
+
console.log(` Version: ${npmInfo.version}`);
|
|
515
|
+
if (npmInfo.description) {
|
|
516
|
+
console.log(` Description: ${npmInfo.description}`);
|
|
517
|
+
}
|
|
518
|
+
if (npmInfo.homepage) {
|
|
519
|
+
console.log(` Homepage: ${chalk.blue(npmInfo.homepage)}`);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (installed) {
|
|
523
|
+
const localVersion = getInstalledVersion(installed.package, pluginsDir);
|
|
524
|
+
console.log();
|
|
525
|
+
console.log(chalk.dim('Local Installation:'));
|
|
526
|
+
console.log(` Installed: ${chalk.green('Yes')}`);
|
|
527
|
+
console.log(` Version: ${localVersion || 'unknown'}`);
|
|
528
|
+
console.log(` Enabled: ${installed.enabled !== false ? chalk.green('Yes') : chalk.yellow('No')}`);
|
|
529
|
+
if (npmInfo && localVersion && localVersion !== npmInfo.version) {
|
|
530
|
+
console.log();
|
|
531
|
+
console.log(chalk.yellow(` Update available: ${localVersion} → ${npmInfo.version}`));
|
|
532
|
+
console.log(chalk.dim(` Run: znvault plugin update ${getShortName(packageName)}`));
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
else {
|
|
536
|
+
console.log();
|
|
537
|
+
console.log(chalk.dim('Not installed locally.'));
|
|
538
|
+
console.log(`Install with: ${chalk.cyan(`znvault plugin install ${getShortName(packageName)}`)}`);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
catch (err) {
|
|
542
|
+
spinner.fail('Failed to fetch info');
|
|
543
|
+
output.error(err instanceof Error ? err.message : String(err));
|
|
544
|
+
process.exit(1);
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -27,14 +27,16 @@ import { registerCompletionCommands } from './commands/completion.js';
|
|
|
27
27
|
import { registerUnsealCommands } from './commands/unseal.js';
|
|
28
28
|
import { registerDeviceCommands } from './commands/device.js';
|
|
29
29
|
import { registerCryptoCommands } from './commands/crypto.js';
|
|
30
|
+
import { registerPluginCommands } from './commands/plugin.js';
|
|
30
31
|
import { client } from './lib/client.js';
|
|
31
|
-
import { setRuntimeProfile, getActiveProfileName, getConfig } from './lib/config.js';
|
|
32
|
+
import { setRuntimeProfile, getActiveProfileName, getConfig, getPlugins } from './lib/config.js';
|
|
32
33
|
import { cliBanner, helpHint } from './lib/visual.js';
|
|
33
34
|
import { runBackgroundUpdateCheck } from './lib/cli-update.js';
|
|
34
35
|
import { setOutputMode } from './lib/output-mode.js';
|
|
35
36
|
import { profileIndicator } from './lib/output.js';
|
|
36
37
|
import { configureContextHelp } from './lib/context-help.js';
|
|
37
38
|
import { getVersion } from './lib/version.js';
|
|
39
|
+
import { createCLIPluginLoader } from './plugins/loader.js';
|
|
38
40
|
const program = new Command();
|
|
39
41
|
program
|
|
40
42
|
.name('znvault')
|
|
@@ -97,16 +99,36 @@ registerCompletionCommands(program);
|
|
|
97
99
|
registerUnsealCommands(program);
|
|
98
100
|
registerDeviceCommands(program);
|
|
99
101
|
registerCryptoCommands(program);
|
|
102
|
+
registerPluginCommands(program);
|
|
100
103
|
// Configure context-aware help (hides superadmin-only commands for regular users)
|
|
101
104
|
configureContextHelp(program);
|
|
102
105
|
// Run background update check (non-blocking)
|
|
103
106
|
runBackgroundUpdateCheck();
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
// Main async entry point
|
|
108
|
+
async function main() {
|
|
109
|
+
// Show banner when no command is provided
|
|
110
|
+
if (process.argv.length === 2) {
|
|
111
|
+
console.log(cliBanner(getVersion()));
|
|
112
|
+
console.log(helpHint());
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
// Load CLI plugins
|
|
116
|
+
const pluginConfigs = getPlugins();
|
|
117
|
+
if (pluginConfigs.length > 0) {
|
|
118
|
+
try {
|
|
119
|
+
const pluginLoader = await createCLIPluginLoader(pluginConfigs, client, getConfig, getActiveProfileName);
|
|
120
|
+
pluginLoader.registerCommands(program);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Plugin loading errors are non-fatal - warnings already printed
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Parse and execute
|
|
127
|
+
program.parse();
|
|
109
128
|
}
|
|
110
|
-
//
|
|
111
|
-
|
|
129
|
+
// Run main
|
|
130
|
+
main().catch((err) => {
|
|
131
|
+
console.error('CLI error:', err instanceof Error ? err.message : String(err));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
});
|
|
112
134
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CLIConfig, StoredCredentials, FullConfig } from '../types/index.js';
|
|
2
|
+
import type { CLIPluginConfig } from '../plugins/types.js';
|
|
2
3
|
export interface Profile {
|
|
3
4
|
url: string;
|
|
4
5
|
insecure: boolean;
|
|
@@ -137,4 +138,24 @@ export declare function getProfile(name: string): Profile | undefined;
|
|
|
137
138
|
* Rename a profile
|
|
138
139
|
*/
|
|
139
140
|
export declare function renameProfile(oldName: string, newName: string): void;
|
|
141
|
+
/**
|
|
142
|
+
* Get all configured plugins
|
|
143
|
+
*/
|
|
144
|
+
export declare function getPlugins(): CLIPluginConfig[];
|
|
145
|
+
/**
|
|
146
|
+
* Add a plugin configuration
|
|
147
|
+
*/
|
|
148
|
+
export declare function addPlugin(config: CLIPluginConfig): void;
|
|
149
|
+
/**
|
|
150
|
+
* Remove a plugin by package name or path
|
|
151
|
+
*/
|
|
152
|
+
export declare function removePlugin(packageOrPath: string): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Enable or disable a plugin
|
|
155
|
+
*/
|
|
156
|
+
export declare function setPluginEnabled(packageOrPath: string, enabled: boolean): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Clear all plugins
|
|
159
|
+
*/
|
|
160
|
+
export declare function clearPlugins(): void;
|
|
140
161
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -10,6 +10,7 @@ const store = new Conf({
|
|
|
10
10
|
defaults: {
|
|
11
11
|
activeProfile: DEFAULT_PROFILE,
|
|
12
12
|
profiles: {},
|
|
13
|
+
plugins: [],
|
|
13
14
|
},
|
|
14
15
|
});
|
|
15
16
|
// Runtime profile override (set via --profile flag)
|
|
@@ -363,4 +364,62 @@ export function renameProfile(oldName, newName) {
|
|
|
363
364
|
store.set('activeProfile', newName);
|
|
364
365
|
}
|
|
365
366
|
}
|
|
367
|
+
// ============================================================================
|
|
368
|
+
// Plugin Management
|
|
369
|
+
// ============================================================================
|
|
370
|
+
/**
|
|
371
|
+
* Get all configured plugins
|
|
372
|
+
*/
|
|
373
|
+
export function getPlugins() {
|
|
374
|
+
return store.get('plugins') ?? [];
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Add a plugin configuration
|
|
378
|
+
*/
|
|
379
|
+
export function addPlugin(config) {
|
|
380
|
+
const plugins = getPlugins();
|
|
381
|
+
const source = config.package || config.path;
|
|
382
|
+
// Check for duplicate
|
|
383
|
+
const existing = plugins.findIndex(p => (p.package || p.path) === source);
|
|
384
|
+
if (existing >= 0) {
|
|
385
|
+
// Update existing
|
|
386
|
+
plugins[existing] = config;
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
plugins.push(config);
|
|
390
|
+
}
|
|
391
|
+
store.set('plugins', plugins);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Remove a plugin by package name or path
|
|
395
|
+
*/
|
|
396
|
+
export function removePlugin(packageOrPath) {
|
|
397
|
+
const plugins = getPlugins();
|
|
398
|
+
const initialLength = plugins.length;
|
|
399
|
+
const filtered = plugins.filter(p => p.package !== packageOrPath && p.path !== packageOrPath);
|
|
400
|
+
if (filtered.length < initialLength) {
|
|
401
|
+
store.set('plugins', filtered);
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Enable or disable a plugin
|
|
408
|
+
*/
|
|
409
|
+
export function setPluginEnabled(packageOrPath, enabled) {
|
|
410
|
+
const plugins = getPlugins();
|
|
411
|
+
const plugin = plugins.find(p => p.package === packageOrPath || p.path === packageOrPath);
|
|
412
|
+
if (plugin) {
|
|
413
|
+
plugin.enabled = enabled;
|
|
414
|
+
store.set('plugins', plugins);
|
|
415
|
+
return true;
|
|
416
|
+
}
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Clear all plugins
|
|
421
|
+
*/
|
|
422
|
+
export function clearPlugins() {
|
|
423
|
+
store.set('plugins', []);
|
|
424
|
+
}
|
|
366
425
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,uCAAuC;AAWvC,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CLIPluginConfig, LoadedCLIPlugin } from './types.js';
|
|
3
|
+
import type { VaultClient } from '../lib/client.js';
|
|
4
|
+
import type { FullConfig } from '../types/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* CLI Plugin Loader
|
|
7
|
+
*
|
|
8
|
+
* Discovers and loads plugins that add commands to the znvault CLI.
|
|
9
|
+
* Plugins are npm packages or local files that export a CLIPlugin.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CLIPluginLoader {
|
|
12
|
+
private plugins;
|
|
13
|
+
private context;
|
|
14
|
+
constructor(client: VaultClient, getConfig: () => FullConfig, getProfileName: () => string);
|
|
15
|
+
/**
|
|
16
|
+
* Load plugins from configuration
|
|
17
|
+
*/
|
|
18
|
+
loadPlugins(pluginConfigs: CLIPluginConfig[]): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Load a single plugin
|
|
21
|
+
*/
|
|
22
|
+
loadPlugin(config: CLIPluginConfig): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Validate that a plugin has required fields
|
|
25
|
+
*/
|
|
26
|
+
private validatePlugin;
|
|
27
|
+
/**
|
|
28
|
+
* Register all loaded plugin commands on the program
|
|
29
|
+
*/
|
|
30
|
+
registerCommands(program: Command): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get list of loaded plugins
|
|
33
|
+
*/
|
|
34
|
+
getLoadedPlugins(): Array<{
|
|
35
|
+
name: string;
|
|
36
|
+
version: string;
|
|
37
|
+
source: string;
|
|
38
|
+
status: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Check if any plugins are loaded
|
|
42
|
+
*/
|
|
43
|
+
hasPlugins(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Get plugin count
|
|
46
|
+
*/
|
|
47
|
+
getPluginCount(): number;
|
|
48
|
+
/**
|
|
49
|
+
* Get a specific plugin by name
|
|
50
|
+
*/
|
|
51
|
+
getPlugin(name: string): LoadedCLIPlugin | undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create and initialize CLI plugin loader
|
|
55
|
+
*
|
|
56
|
+
* @param pluginConfigs - Plugin configurations from CLI config
|
|
57
|
+
* @param client - Vault HTTP client
|
|
58
|
+
* @param getConfig - Function to get current profile config
|
|
59
|
+
* @param getProfileName - Function to get current profile name
|
|
60
|
+
* @returns Initialized plugin loader
|
|
61
|
+
*/
|
|
62
|
+
export declare function createCLIPluginLoader(pluginConfigs: CLIPluginConfig[], client: VaultClient, getConfig: () => FullConfig, getProfileName: () => string): Promise<CLIPluginLoader>;
|
|
63
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAEV,eAAe,EAGf,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgBpD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,OAAO,CAAmB;gBAGhC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,UAAU,EAC3B,cAAc,EAAE,MAAM,MAAM;IAW9B;;OAEG;IACG,WAAW,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGxD;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAgBxC;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAW5F;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;CAGrD;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,eAAe,EAAE,EAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,UAAU,EAC3B,cAAc,EAAE,MAAM,MAAM,GAC3B,OAAO,CAAC,eAAe,CAAC,CAI1B"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// Path: znvault-cli/src/plugins/loader.ts
|
|
2
|
+
// CLI plugin loader for znvault
|
|
3
|
+
import * as output from '../lib/output.js';
|
|
4
|
+
import { isPlainMode } from '../lib/output-mode.js';
|
|
5
|
+
import { getConfigPath } from '../lib/config.js';
|
|
6
|
+
import { pathToFileURL } from 'node:url';
|
|
7
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { resolve, join, dirname } from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Get the plugins directory path (alongside config.json)
|
|
11
|
+
*/
|
|
12
|
+
function getPluginsDir() {
|
|
13
|
+
const configPath = getConfigPath();
|
|
14
|
+
return join(dirname(configPath), 'plugins');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* CLI Plugin Loader
|
|
18
|
+
*
|
|
19
|
+
* Discovers and loads plugins that add commands to the znvault CLI.
|
|
20
|
+
* Plugins are npm packages or local files that export a CLIPlugin.
|
|
21
|
+
*/
|
|
22
|
+
export class CLIPluginLoader {
|
|
23
|
+
plugins = new Map();
|
|
24
|
+
context;
|
|
25
|
+
constructor(client, getConfig, getProfileName) {
|
|
26
|
+
this.context = {
|
|
27
|
+
client,
|
|
28
|
+
output,
|
|
29
|
+
getConfig,
|
|
30
|
+
getProfileName,
|
|
31
|
+
isPlainMode,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load plugins from configuration
|
|
36
|
+
*/
|
|
37
|
+
async loadPlugins(pluginConfigs) {
|
|
38
|
+
for (const config of pluginConfigs) {
|
|
39
|
+
// Skip disabled plugins
|
|
40
|
+
if (config.enabled === false) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
await this.loadPlugin(config);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// Don't fail CLI startup on plugin error - just warn
|
|
48
|
+
const source = config.package || config.path || 'unknown';
|
|
49
|
+
console.warn(`Failed to load plugin ${source}: ${err instanceof Error ? err.message : String(err)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Load a single plugin
|
|
55
|
+
*/
|
|
56
|
+
async loadPlugin(config) {
|
|
57
|
+
const { package: packageName, path: localPath, config: pluginOptions } = config;
|
|
58
|
+
const source = packageName || localPath || 'unknown';
|
|
59
|
+
try {
|
|
60
|
+
let module;
|
|
61
|
+
if (localPath) {
|
|
62
|
+
// Local plugin file - resolve to absolute path
|
|
63
|
+
const absolutePath = resolve(localPath);
|
|
64
|
+
if (!existsSync(absolutePath)) {
|
|
65
|
+
throw new Error(`Plugin file not found: ${absolutePath}`);
|
|
66
|
+
}
|
|
67
|
+
// Convert to file URL for ESM import
|
|
68
|
+
const fileUrl = pathToFileURL(absolutePath).href;
|
|
69
|
+
module = await import(fileUrl);
|
|
70
|
+
}
|
|
71
|
+
else if (packageName) {
|
|
72
|
+
// npm package - resolve from plugins directory
|
|
73
|
+
const pluginsDir = getPluginsDir();
|
|
74
|
+
const packagePath = join(pluginsDir, 'node_modules', packageName);
|
|
75
|
+
if (existsSync(packagePath)) {
|
|
76
|
+
// Load from plugins directory
|
|
77
|
+
const pkgJsonPath = join(packagePath, 'package.json');
|
|
78
|
+
if (!existsSync(pkgJsonPath)) {
|
|
79
|
+
throw new Error(`Package ${packageName} found but missing package.json`);
|
|
80
|
+
}
|
|
81
|
+
const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
|
|
82
|
+
// Determine the CLI entry point
|
|
83
|
+
// Try ./cli export first, then main/default export
|
|
84
|
+
let entryPoint;
|
|
85
|
+
if (pkgJson.exports?.['./cli']?.import) {
|
|
86
|
+
entryPoint = pkgJson.exports['./cli'].import;
|
|
87
|
+
}
|
|
88
|
+
else if (pkgJson.exports?.['./cli']) {
|
|
89
|
+
entryPoint = typeof pkgJson.exports['./cli'] === 'string'
|
|
90
|
+
? pkgJson.exports['./cli']
|
|
91
|
+
: pkgJson.exports['./cli'].default || pkgJson.exports['./cli'].import;
|
|
92
|
+
}
|
|
93
|
+
else if (pkgJson.exports?.['.']?.import) {
|
|
94
|
+
entryPoint = pkgJson.exports['.'].import;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
entryPoint = pkgJson.main || 'dist/index.js';
|
|
98
|
+
}
|
|
99
|
+
const modulePath = join(packagePath, entryPoint);
|
|
100
|
+
const fileUrl = pathToFileURL(modulePath).href;
|
|
101
|
+
module = await import(fileUrl);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Fallback to global module resolution (for globally installed plugins)
|
|
105
|
+
module = await import(packageName);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
throw new Error('Plugin config must specify package or path');
|
|
110
|
+
}
|
|
111
|
+
// Support both direct export and factory function
|
|
112
|
+
let plugin;
|
|
113
|
+
if (typeof module.default === 'function') {
|
|
114
|
+
plugin = module.default(pluginOptions);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
plugin = module.default;
|
|
118
|
+
}
|
|
119
|
+
// Validate plugin interface
|
|
120
|
+
this.validatePlugin(plugin, source);
|
|
121
|
+
// Check for duplicate names
|
|
122
|
+
if (this.plugins.has(plugin.name)) {
|
|
123
|
+
throw new Error(`Plugin name '${plugin.name}' is already registered`);
|
|
124
|
+
}
|
|
125
|
+
// Store loaded plugin
|
|
126
|
+
this.plugins.set(plugin.name, {
|
|
127
|
+
plugin,
|
|
128
|
+
config: pluginOptions,
|
|
129
|
+
source,
|
|
130
|
+
status: 'loaded',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
// Store error state for reporting
|
|
135
|
+
const errorEntry = {
|
|
136
|
+
plugin: { name: source, version: '0.0.0', registerCommands: () => { } },
|
|
137
|
+
source,
|
|
138
|
+
status: 'error',
|
|
139
|
+
error: err instanceof Error ? err : new Error(String(err)),
|
|
140
|
+
};
|
|
141
|
+
this.plugins.set(source, errorEntry);
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validate that a plugin has required fields
|
|
147
|
+
*/
|
|
148
|
+
validatePlugin(plugin, source) {
|
|
149
|
+
if (!plugin.name || typeof plugin.name !== 'string') {
|
|
150
|
+
throw new Error(`Invalid CLI plugin from ${source}: missing or invalid 'name'`);
|
|
151
|
+
}
|
|
152
|
+
if (!plugin.version || typeof plugin.version !== 'string') {
|
|
153
|
+
throw new Error(`Invalid CLI plugin from ${source}: missing or invalid 'version'`);
|
|
154
|
+
}
|
|
155
|
+
if (!plugin.registerCommands || typeof plugin.registerCommands !== 'function') {
|
|
156
|
+
throw new Error(`Invalid CLI plugin from ${source}: missing or invalid 'registerCommands' function`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Register all loaded plugin commands on the program
|
|
161
|
+
*/
|
|
162
|
+
registerCommands(program) {
|
|
163
|
+
for (const [name, loaded] of this.plugins) {
|
|
164
|
+
if (loaded.status !== 'loaded') {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
loaded.plugin.registerCommands(program, this.context);
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
console.warn(`Failed to register commands for plugin ${name}: ${err instanceof Error ? err.message : String(err)}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get list of loaded plugins
|
|
177
|
+
*/
|
|
178
|
+
getLoadedPlugins() {
|
|
179
|
+
return Array.from(this.plugins.values())
|
|
180
|
+
.filter(p => p.status === 'loaded')
|
|
181
|
+
.map(p => ({
|
|
182
|
+
name: p.plugin.name,
|
|
183
|
+
version: p.plugin.version,
|
|
184
|
+
source: p.source,
|
|
185
|
+
status: p.status,
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check if any plugins are loaded
|
|
190
|
+
*/
|
|
191
|
+
hasPlugins() {
|
|
192
|
+
return Array.from(this.plugins.values()).some(p => p.status === 'loaded');
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get plugin count
|
|
196
|
+
*/
|
|
197
|
+
getPluginCount() {
|
|
198
|
+
return Array.from(this.plugins.values()).filter(p => p.status === 'loaded').length;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get a specific plugin by name
|
|
202
|
+
*/
|
|
203
|
+
getPlugin(name) {
|
|
204
|
+
return this.plugins.get(name);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create and initialize CLI plugin loader
|
|
209
|
+
*
|
|
210
|
+
* @param pluginConfigs - Plugin configurations from CLI config
|
|
211
|
+
* @param client - Vault HTTP client
|
|
212
|
+
* @param getConfig - Function to get current profile config
|
|
213
|
+
* @param getProfileName - Function to get current profile name
|
|
214
|
+
* @returns Initialized plugin loader
|
|
215
|
+
*/
|
|
216
|
+
export async function createCLIPluginLoader(pluginConfigs, client, getConfig, getProfileName) {
|
|
217
|
+
const loader = new CLIPluginLoader(client, getConfig, getProfileName);
|
|
218
|
+
await loader.loadPlugins(pluginConfigs);
|
|
219
|
+
return loader;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { VaultClient } from '../lib/client.js';
|
|
3
|
+
import type { FullConfig } from '../types/index.js';
|
|
4
|
+
import * as output from '../lib/output.js';
|
|
5
|
+
/**
|
|
6
|
+
* CLI plugin interface
|
|
7
|
+
*
|
|
8
|
+
* Plugins can add commands to the znvault CLI by implementing this interface.
|
|
9
|
+
* Commands are registered on the commander program during CLI startup.
|
|
10
|
+
*/
|
|
11
|
+
export interface CLIPlugin {
|
|
12
|
+
/** Unique plugin name (e.g., 'payara', 'kubernetes') */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Semver version */
|
|
15
|
+
version: string;
|
|
16
|
+
/** Optional description */
|
|
17
|
+
description?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Register commands on the CLI program.
|
|
20
|
+
* Can add top-level commands or subcommands under existing groups.
|
|
21
|
+
*
|
|
22
|
+
* @param program - The root Commander program
|
|
23
|
+
* @param ctx - Context with access to client, output, and config
|
|
24
|
+
*/
|
|
25
|
+
registerCommands(program: Command, ctx: CLIPluginContext): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Factory function for creating configurable plugins
|
|
29
|
+
*/
|
|
30
|
+
export type CLIPluginFactory = (config?: Record<string, unknown>) => CLIPlugin;
|
|
31
|
+
/**
|
|
32
|
+
* Context provided to CLI plugins - safe access to CLI internals
|
|
33
|
+
*/
|
|
34
|
+
export interface CLIPluginContext {
|
|
35
|
+
/** HTTP client with authentication */
|
|
36
|
+
client: VaultClient;
|
|
37
|
+
/** Output utilities (respects --plain mode) */
|
|
38
|
+
output: typeof output;
|
|
39
|
+
/** Get current profile config */
|
|
40
|
+
getConfig(): FullConfig;
|
|
41
|
+
/** Get current profile name */
|
|
42
|
+
getProfileName(): string;
|
|
43
|
+
/** Check if plain mode is active */
|
|
44
|
+
isPlainMode(): boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Plugin configuration stored in CLI config
|
|
48
|
+
*/
|
|
49
|
+
export interface CLIPluginConfig {
|
|
50
|
+
/** npm package name (e.g., '@zincapp/znvault-plugin-payara') */
|
|
51
|
+
package?: string;
|
|
52
|
+
/** Local file path (alternative to package) */
|
|
53
|
+
path?: string;
|
|
54
|
+
/** Plugin-specific configuration passed to factory */
|
|
55
|
+
config?: Record<string, unknown>;
|
|
56
|
+
/** Enable/disable plugin (default: true) */
|
|
57
|
+
enabled?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Internal loaded plugin state
|
|
61
|
+
*/
|
|
62
|
+
export interface LoadedCLIPlugin {
|
|
63
|
+
plugin: CLIPlugin;
|
|
64
|
+
config?: Record<string, unknown>;
|
|
65
|
+
source: string;
|
|
66
|
+
status: 'loaded' | 'error';
|
|
67
|
+
error?: Error;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,MAAM,EAAE,WAAW,CAAC;IAEpB,+CAA+C;IAC/C,MAAM,EAAE,OAAO,MAAM,CAAC;IAEtB,iCAAiC;IACjC,SAAS,IAAI,UAAU,CAAC;IAExB,+BAA+B;IAC/B,cAAc,IAAI,MAAM,CAAC;IAEzB,oCAAoC;IACpC,WAAW,IAAI,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC"}
|