summaryrefslogtreecommitdiff
path: root/deps/npm/lib/uninstall.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/uninstall.js')
-rw-r--r--deps/npm/lib/uninstall.js87
1 files changed, 50 insertions, 37 deletions
diff --git a/deps/npm/lib/uninstall.js b/deps/npm/lib/uninstall.js
index 15995c0b3c..d7116e4c2d 100644
--- a/deps/npm/lib/uninstall.js
+++ b/deps/npm/lib/uninstall.js
@@ -2,49 +2,62 @@ const { resolve } = require('path')
const Arborist = require('@npmcli/arborist')
const rpj = require('read-package-json-fast')
-const npm = require('./npm.js')
const usageUtil = require('./utils/usage.js')
const reifyFinish = require('./utils/reify-finish.js')
const completion = require('./utils/completion/installed-shallow.js')
-const usage = usageUtil(
- 'uninstall',
- 'npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|--no-save]'
-)
-
-const cmd = (args, cb) => rm(args).then(() => cb()).catch(cb)
-
-const rm = async args => {
- // the /path/to/node_modules/..
- const { global, prefix } = npm.flatOptions
- const path = global ? resolve(npm.globalDir, '..') : prefix
-
- if (!args.length) {
- if (!global)
- throw new Error('Must provide a package name to remove')
- else {
- let pkg
-
- try {
- pkg = await rpj(resolve(npm.localPrefix, 'package.json'))
- } catch (er) {
- if (er.code !== 'ENOENT' && er.code !== 'ENOTDIR')
- throw er
- else
- throw usage
- }
+class Uninstall {
+ constructor (npm) {
+ this.npm = npm
+ }
- args.push(pkg.name)
- }
+ get usage () {
+ return usageUtil(
+ 'uninstall',
+ 'npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|--no-save]'
+ )
}
- const arb = new Arborist({ ...npm.flatOptions, path })
+ /* istanbul ignore next - see test/lib/load-all-commands.js */
+ async completion (opts) {
+ return completion(this.npm, opts)
+ }
- await arb.reify({
- ...npm.flatOptions,
- rm: args,
- })
- await reifyFinish(arb)
-}
+ exec (args, cb) {
+ this.uninstall(args).then(() => cb()).catch(cb)
+ }
-module.exports = Object.assign(cmd, { usage, completion })
+ async uninstall (args) {
+ // the /path/to/node_modules/..
+ const { global, prefix } = this.npm.flatOptions
+ const path = global ? resolve(this.npm.globalDir, '..') : prefix
+
+ if (!args.length) {
+ if (!global)
+ throw new Error('Must provide a package name to remove')
+ else {
+ let pkg
+
+ try {
+ pkg = await rpj(resolve(this.npm.localPrefix, 'package.json'))
+ } catch (er) {
+ if (er.code !== 'ENOENT' && er.code !== 'ENOTDIR')
+ throw er
+ else
+ throw this.usage
+ }
+
+ args.push(pkg.name)
+ }
+ }
+
+ const arb = new Arborist({ ...this.npm.flatOptions, path })
+
+ await arb.reify({
+ ...this.npm.flatOptions,
+ rm: args,
+ })
+ await reifyFinish(this.npm, arb)
+ }
+}
+module.exports = Uninstall