@oclif/plugin-plugins
Advanced tools
Comparing version 5.1.3 to 5.2.0
import { Command, Flags } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { dim } from 'ansis'; | ||
// @ts-expect-error because object-treeify does not have types: https://github.com/blackflux/object-treeify/issues/1077 | ||
@@ -69,17 +69,17 @@ import treeify from 'object-treeify'; | ||
return; | ||
this.log(chalk.dim('\nUninstalled JIT Plugins:')); | ||
this.log(dim('\nUninstalled JIT Plugins:')); | ||
for (const { name, version } of jitPlugins) { | ||
this.log(`${this.plugins.friendlyName(name)} ${chalk.dim(version)}`); | ||
this.log(`${this.plugins.friendlyName(name)} ${dim(version)}`); | ||
} | ||
} | ||
formatPlugin(plugin) { | ||
let output = `${this.plugins.friendlyName(plugin.name)} ${chalk.dim(plugin.version)}`; | ||
let output = `${this.plugins.friendlyName(plugin.name)} ${dim(plugin.version)}`; | ||
if (plugin.type !== 'user') | ||
output += chalk.dim(` (${plugin.type})`); | ||
output += dim(` (${plugin.type})`); | ||
if (plugin.type === 'link') | ||
output += ` ${plugin.root}`; | ||
else if (plugin.tag && plugin.tag !== 'latest') | ||
output += chalk.dim(` (${String(plugin.tag)})`); | ||
output += dim(` (${String(plugin.tag)})`); | ||
return output; | ||
} | ||
} |
@@ -12,3 +12,3 @@ import { Command, Plugin } from '@oclif/core'; | ||
static args: { | ||
plugin: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>; | ||
plugin: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>; | ||
}; | ||
@@ -19,4 +19,4 @@ static description: string; | ||
static flags: { | ||
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>; | ||
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
help: import("@oclif/core/interfaces").BooleanFlag<void>; | ||
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
}; | ||
@@ -23,0 +23,0 @@ static strict: boolean; |
import { Args, Command, Flags } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { bold, dim } from 'ansis'; | ||
import { readFile } from 'node:fs/promises'; | ||
@@ -80,3 +80,3 @@ import { dirname, join, sep } from 'node:path'; | ||
const from = plugin.pjson.dependencies?.[dep]; | ||
const versionMsg = chalk.dim(from ? `${from} => ${version}` : version); | ||
const versionMsg = dim(from ? `${from} => ${version}` : version); | ||
const msg = verbose ? `${dep} ${versionMsg} ${pkgPath}` : `${dep} ${versionMsg}`; | ||
@@ -87,3 +87,3 @@ dependencies[msg] = null; | ||
const tree = { | ||
[chalk.bold.cyan(plugin.name)]: { | ||
[bold.cyan(plugin.name)]: { | ||
[`version ${plugin.version}`]: null, | ||
@@ -122,3 +122,3 @@ ...(plugin.tag ? { [`tag ${plugin.tag}`]: null } : {}), | ||
catch (error) { | ||
this.log(chalk.bold.red('failed')); | ||
this.log(bold.red('failed')); | ||
throw error; | ||
@@ -125,0 +125,0 @@ } |
/* eslint-disable no-await-in-loop */ | ||
import { Args, Command, Errors, Flags, ux } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { bold, cyan } from 'ansis'; | ||
import validate from 'validate-npm-package-name'; | ||
@@ -136,3 +136,3 @@ import { determineLogLevel } from '../../log-level.js'; | ||
if (p.type === 'npm') { | ||
ux.action.start(`${this.config.name}: Installing plugin ${chalk.cyan(plugins.friendlyName(p.name) + '@' + p.tag)}`); | ||
ux.action.start(`${this.config.name}: Installing plugin ${cyan(plugins.friendlyName(p.name) + '@' + p.tag)}`); | ||
plugin = await plugins.install(p.name, { | ||
@@ -144,3 +144,3 @@ force: flags.force, | ||
else { | ||
ux.action.start(`${this.config.name}: Installing plugin ${chalk.cyan(p.url)}`); | ||
ux.action.start(`${this.config.name}: Installing plugin ${cyan(p.url)}`); | ||
plugin = await plugins.install(p.url, { force: flags.force }); | ||
@@ -150,3 +150,3 @@ } | ||
catch (error) { | ||
ux.action.stop(chalk.bold.red('failed')); | ||
ux.action.stop(bold.red('failed')); | ||
throw error; | ||
@@ -153,0 +153,0 @@ } |
import { Command } from '@oclif/core'; | ||
export default class PluginsLink extends Command { | ||
static args: { | ||
path: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>; | ||
path: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>; | ||
}; | ||
@@ -9,7 +9,7 @@ static description: string; | ||
static flags: { | ||
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>; | ||
install: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
help: import("@oclif/core/interfaces").BooleanFlag<void>; | ||
install: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
}; | ||
run(): Promise<void>; | ||
} |
import { Args, Command, Flags, ux } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { cyan } from 'ansis'; | ||
import { determineLogLevel } from '../../log-level.js'; | ||
@@ -30,3 +30,3 @@ import Plugins from '../../plugins.js'; | ||
}); | ||
ux.action.start(`${this.config.name}: Linking plugin ${chalk.cyan(args.path)}`); | ||
ux.action.start(`${this.config.name}: Linking plugin ${cyan(args.path)}`); | ||
await plugins.link(args.path, { install: flags.install }); | ||
@@ -33,0 +33,0 @@ ux.action.stop(); |
import { Command } from '@oclif/core'; | ||
export default class Reset extends Command { | ||
static flags: { | ||
hard: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
reinstall: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
hard: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
reinstall: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
}; | ||
@@ -7,0 +7,0 @@ static summary: string; |
/* eslint-disable no-await-in-loop */ | ||
import { Command, Flags } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { dim } from 'ansis'; | ||
import { rm } from 'node:fs/promises'; | ||
@@ -25,3 +25,3 @@ import { join } from 'node:path'; | ||
for (const plugin of userPlugins) { | ||
this.log(`- ${plugin.name} ${chalk.dim(this.config.plugins.get(plugin.name)?.version)} ${chalk.dim(`(${plugin.type})`)}`); | ||
this.log(`- ${plugin.name} ${dim(this.config.plugins.get(plugin.name)?.version ?? '')} ${dim(`(${plugin.type})`)}`); | ||
} | ||
@@ -63,3 +63,3 @@ if (flags.hard) { | ||
const newPlugin = await plugins.link(plugin.root, { install: false }); | ||
const newVersion = chalk.dim(`-> ${newPlugin.version}`); | ||
const newVersion = dim(`-> ${newPlugin.version}`); | ||
this.log(`✅ Relinked ${plugin.name} ${newVersion}`); | ||
@@ -76,3 +76,3 @@ } | ||
: await plugins.install(plugin.name, { tag: plugin.tag }); | ||
const newVersion = chalk.dim(`-> ${newPlugin.version}`); | ||
const newVersion = dim(`-> ${newPlugin.version}`); | ||
const tag = plugin.tag ? `@${plugin.tag}` : plugin.url ? ` (${plugin.url})` : ''; | ||
@@ -79,0 +79,0 @@ this.log(`✅ Reinstalled ${plugin.name}${tag} ${newVersion}`); |
@@ -5,3 +5,3 @@ import { Command } from '@oclif/core'; | ||
static args: { | ||
plugin: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>; | ||
plugin: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>; | ||
}; | ||
@@ -11,4 +11,4 @@ static description: string; | ||
static flags: { | ||
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>; | ||
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
help: import("@oclif/core/interfaces").BooleanFlag<void>; | ||
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
}; | ||
@@ -15,0 +15,0 @@ static strict: boolean; |
/* eslint-disable no-await-in-loop */ | ||
import { Args, Command, Flags, ux } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { bold } from 'ansis'; | ||
import { determineLogLevel } from '../../log-level.js'; | ||
@@ -55,3 +55,3 @@ import Plugins from '../../plugins.js'; | ||
catch (error) { | ||
ux.action.stop(chalk.bold.red('failed')); | ||
ux.action.stop(bold.red('failed')); | ||
throw error; | ||
@@ -58,0 +58,0 @@ } |
@@ -5,6 +5,6 @@ import { Command } from '@oclif/core'; | ||
static flags: { | ||
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>; | ||
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>; | ||
help: import("@oclif/core/interfaces").BooleanFlag<void>; | ||
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>; | ||
}; | ||
run(): Promise<void>; | ||
} |
@@ -23,3 +23,3 @@ import { Errors, ux } from '@oclif/core'; | ||
if (options.logLevel !== 'notice' && options.logLevel !== 'silent') { | ||
ux.logToStderr(`${options.cwd}: ${bin} ${args.join(' ')}`); | ||
ux.stderr(`${options.cwd}: ${bin} ${args.join(' ')}`); | ||
} | ||
@@ -26,0 +26,0 @@ debug(`${options.cwd}: ${bin} ${args.join(' ')}`); |
import { Interfaces } from '@oclif/core'; | ||
import { LogLevel } from './log-level.js'; | ||
import { NPM } from './npm.js'; | ||
type UserPJSON = { | ||
type Plugin = Interfaces.LinkedPlugin | Interfaces.UserPlugin; | ||
type NormalizedUserPJSON = { | ||
dependencies: Record<string, string>; | ||
oclif: { | ||
plugins: Array<Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User>; | ||
plugins: Plugin[]; | ||
schema: number; | ||
@@ -21,5 +22,5 @@ }; | ||
}); | ||
add(...plugins: Interfaces.PJSON.PluginTypes[]): Promise<void>; | ||
add(...plugins: Plugin[]): Promise<void>; | ||
friendlyName(name: string): string; | ||
hasPlugin(name: string): Promise<Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User | false>; | ||
hasPlugin(name: string): Promise<Plugin | false>; | ||
install(name: string, { force, tag }?: { | ||
@@ -32,5 +33,5 @@ force?: boolean | undefined; | ||
}): Promise<Interfaces.Config>; | ||
list(): Promise<(Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User)[]>; | ||
list(): Promise<Plugin[]>; | ||
maybeUnfriendlyName(name: string): Promise<string>; | ||
pjson(): Promise<UserPJSON>; | ||
pjson(): Promise<NormalizedUserPJSON>; | ||
remove(name: string): Promise<void>; | ||
@@ -37,0 +38,0 @@ unfriendlyName(name: string): string | undefined; |
import { Config, Errors, ux } from '@oclif/core'; | ||
import chalk from 'chalk'; | ||
import { bold } from 'ansis'; | ||
import makeDebug from 'debug'; | ||
@@ -27,5 +27,3 @@ import { spawn } from 'node:child_process'; | ||
function dedupePlugins(plugins) { | ||
return uniqWith(plugins, | ||
// @ts-expect-error because typescript doesn't think it's possible for a plugin to have the `link` type here | ||
(a, b) => a.name === b.name || (a.type === 'link' && b.type === 'link' && a.root === b.root)); | ||
return uniqWith(plugins, (a, b) => a.name === b.name || (a.type === 'link' && b.type === 'link' && a.root === b.root)); | ||
} | ||
@@ -43,5 +41,5 @@ function extractIssuesLocation(bugs, repository) { | ||
if (containsWarnings) { | ||
ux.logToStderr(chalk.bold.yellow(`\nThese warnings can only be addressed by the owner(s) of ${plugin.name}.`)); | ||
ux.stderr(bold.yellow(`\nThese warnings can only be addressed by the owner(s) of ${plugin.name}.`)); | ||
if (plugin.pjson.bugs || plugin.pjson.repository) { | ||
ux.logToStderr(`We suggest that you create an issue at ${extractIssuesLocation(plugin.pjson.bugs, plugin.pjson.repository)} and ask the plugin owners to address them.\n`); | ||
ux.stderr(`We suggest that you create an issue at ${extractIssuesLocation(plugin.pjson.bugs, plugin.pjson.repository)} and ask the plugin owners to address them.\n`); | ||
} | ||
@@ -393,3 +391,2 @@ } | ||
async savePJSON(pjson) { | ||
this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(pjson, null, 2)); | ||
await mkdir(dirname(this.pjsonPath), { recursive: true }); | ||
@@ -400,8 +397,11 @@ await writeFile(this.pjsonPath, JSON.stringify({ name: this.config.name, ...pjson }, null, 2)); | ||
// if the plugin is a simple string, convert it to an object | ||
const normalizePlugins = (input) => dedupePlugins((input ?? []).map((p) => typeof p === 'string' | ||
? { | ||
name: p, | ||
tag: 'latest', | ||
type: 'user', | ||
} | ||
: p)); | ||
const normalizePlugins = (input) => { | ||
const normalized = (input ?? []).map((p) => typeof p === 'string' | ||
? { | ||
name: p, | ||
tag: 'latest', | ||
type: 'user', | ||
} | ||
: p); | ||
return dedupePlugins(normalized); | ||
}; |
@@ -48,3 +48,3 @@ import { Errors, ux } from '@oclif/core'; | ||
loggedStderr.push(output); | ||
ux.log(output); | ||
ux.stdout(output); | ||
} | ||
@@ -60,3 +60,3 @@ else | ||
loggedStdout.push(output); | ||
ux.log(output); | ||
ux.stdout(output); | ||
} | ||
@@ -63,0 +63,0 @@ else |
@@ -24,3 +24,3 @@ import { Errors, ux } from '@oclif/core'; | ||
if (options.logLevel !== 'notice' && options.logLevel !== 'silent') { | ||
ux.logToStderr(`${options.cwd}: ${bin} ${args.join(' ')}`); | ||
ux.stderr(`${options.cwd}: ${bin} ${args.join(' ')}`); | ||
} | ||
@@ -27,0 +27,0 @@ debug(`${options.cwd}: ${bin} ${args.join(' ')}`); |
@@ -395,3 +395,3 @@ { | ||
}, | ||
"version": "5.1.3" | ||
"version": "5.2.0" | ||
} |
{ | ||
"name": "@oclif/plugin-plugins", | ||
"description": "plugins plugin for oclif", | ||
"version": "5.1.3", | ||
"version": "5.2.0", | ||
"author": "Salesforce", | ||
"bugs": "https://github.com/oclif/plugin-plugins/issues", | ||
"dependencies": { | ||
"@oclif/core": "^3.26.6", | ||
"chalk": "^5.3.0", | ||
"@oclif/core": "4.0.0-beta.11", | ||
"ansis": "^3.2.0", | ||
"debug": "^4.3.4", | ||
@@ -24,2 +24,3 @@ "npm": "^10.8.0", | ||
"@oclif/prettier-config": "^0.2.1", | ||
"@oclif/test": "^4.0.2", | ||
"@types/chai": "^4.3.11", | ||
@@ -41,5 +42,5 @@ "@types/debug": "^4.1.12", | ||
"husky": "^9", | ||
"lint-staged": "^15.2.2", | ||
"lint-staged": "^15.2.4", | ||
"mocha": "^10.4.0", | ||
"oclif": "^4.10.11", | ||
"oclif": "^4.11.0", | ||
"prettier": "^3.2.5", | ||
@@ -73,3 +74,3 @@ "shx": "^0.3.4", | ||
"aliases": { | ||
"aliasme": "@oclif/plugin-test-esm-1" | ||
"aliasme": "@oclif/plugin-version" | ||
}, | ||
@@ -76,0 +77,0 @@ "bin": "mycli", |
@@ -121,3 +121,3 @@ # @oclif/plugin-plugins | ||
_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/index.ts)_ | ||
_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/index.ts)_ | ||
@@ -196,3 +196,3 @@ ## `mycli plugins add PLUGIN` | ||
_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/inspect.ts)_ | ||
_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/inspect.ts)_ | ||
@@ -246,3 +246,3 @@ ## `mycli plugins install PLUGIN` | ||
_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/install.ts)_ | ||
_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/install.ts)_ | ||
@@ -277,3 +277,3 @@ ## `mycli plugins link PATH` | ||
_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/link.ts)_ | ||
_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/link.ts)_ | ||
@@ -319,3 +319,3 @@ ## `mycli plugins remove [PLUGIN]` | ||
_See code: [src/commands/plugins/reset.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/reset.ts)_ | ||
_See code: [src/commands/plugins/reset.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/reset.ts)_ | ||
@@ -348,3 +348,3 @@ ## `mycli plugins uninstall [PLUGIN]` | ||
_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/uninstall.ts)_ | ||
_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/uninstall.ts)_ | ||
@@ -393,3 +393,3 @@ ## `mycli plugins unlink [PLUGIN]` | ||
_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/update.ts)_ | ||
_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/update.ts)_ | ||
<!-- commandsstop --> | ||
@@ -396,0 +396,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1916
86315
28
+ Addedansis@^3.2.0
+ Added@babel/code-frame@7.24.7(transitive)
+ Added@babel/helper-validator-identifier@7.24.7(transitive)
+ Added@babel/highlight@7.24.7(transitive)
+ Added@oclif/core@4.0.0-beta.11(transitive)
+ Addedansi-styles@3.2.1(transitive)
+ Addedansis@3.3.2(transitive)
+ Addedargparse@2.0.1(transitive)
+ Addedcallsites@3.1.0(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcli-spinners@2.9.2(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedcosmiconfig@9.0.0(transitive)
+ Addedenv-paths@2.2.1(transitive)
+ Addederror-ex@1.3.2(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedimport-fresh@3.3.0(transitive)
+ Addedis-arrayish@0.2.1(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjs-yaml@4.1.0(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedlines-and-columns@1.2.4(transitive)
+ Addedparent-module@1.0.1(transitive)
+ Addedparse-json@5.2.0(transitive)
+ Addedpicocolors@1.1.0(transitive)
+ Addedresolve-from@4.0.0(transitive)
+ Addedsupports-color@5.5.09.4.0(transitive)
- Removedchalk@^5.3.0
- Removed@oclif/core@3.27.0(transitive)
- Removed@types/cli-progress@3.11.6(transitive)
- Removed@types/node@22.5.5(transitive)
- Removedansicolors@0.3.2(transitive)
- Removedargparse@1.0.10(transitive)
- Removedastral-regex@2.0.0(transitive)
- Removedcardinal@2.1.1(transitive)
- Removedchalk@5.3.0(transitive)
- Removedcli-progress@3.12.0(transitive)
- Removedcolor@4.2.3(transitive)
- Removedcolor-string@1.9.1(transitive)
- Removedcross-spawn@7.0.3(transitive)
- Removedesprima@4.0.1(transitive)
- Removedhyperlinker@1.0.0(transitive)
- Removedis-arrayish@0.3.2(transitive)
- Removedisexe@2.0.0(transitive)
- Removedjs-yaml@3.14.1(transitive)
- Removednatural-orderby@2.0.3(transitive)
- Removedobject-treeify@1.1.33(transitive)
- Removedpassword-prompt@1.1.3(transitive)
- Removedpath-key@3.1.1(transitive)
- Removedredeyed@2.1.1(transitive)
- Removedshebang-command@2.0.0(transitive)
- Removedshebang-regex@3.0.0(transitive)
- Removedsimple-swizzle@0.2.2(transitive)
- Removedslice-ansi@4.0.0(transitive)
- Removedsprintf-js@1.0.3(transitive)
- Removedsupports-color@8.1.1(transitive)
- Removedsupports-hyperlinks@2.3.0(transitive)
- Removedundici-types@6.19.8(transitive)
- Removedwhich@2.0.2(transitive)
Updated@oclif/core@4.0.0-beta.11