|
1 | 1 | 'use strict'
|
2 | 2 |
|
3 |
| -const fs = require('fs') |
4 |
| -const rm = require('rimraf') |
| 3 | +const fs = require('graceful-fs') |
| 4 | +const rimraf = require('rimraf') |
| 5 | +const util = require('util') |
5 | 6 | const path = require('path')
|
6 | 7 | const log = require('npmlog')
|
7 | 8 | const semver = require('semver')
|
8 | 9 |
|
9 |
| -function remove (gyp, argv, callback) { |
10 |
| - var devDir = gyp.devDir |
11 |
| - log.verbose('remove', 'using node-gyp dir:', devDir) |
| 10 | +async function remove (gyp, argv) { |
| 11 | + log.verbose('remove', 'using node-gyp dir:', gyp.devDir) |
12 | 12 |
|
13 | 13 | // get the user-specified version to remove
|
14 |
| - var version = argv[0] || gyp.opts.target |
| 14 | + let version = argv[0] || gyp.opts.target |
15 | 15 | log.verbose('remove', 'removing target version:', version)
|
16 | 16 |
|
17 | 17 | if (!version) {
|
18 |
| - return callback(new Error('You must specify a version number to remove. Ex: "' + process.version + '"')) |
| 18 | + throw new Error(`You must specify a version number to remove. Ex: "${process.version}"`) |
19 | 19 | }
|
20 | 20 |
|
21 |
| - var versionSemver = semver.parse(version) |
| 21 | + const versionSemver = semver.parse(version) |
22 | 22 | if (versionSemver) {
|
23 | 23 | // flatten the version Array into a String
|
24 | 24 | version = versionSemver.version
|
25 | 25 | }
|
26 | 26 |
|
27 |
| - var versionPath = path.resolve(gyp.devDir, version) |
| 27 | + const versionPath = path.resolve(gyp.devDir, version) |
28 | 28 | log.verbose('remove', 'removing development files for version:', version)
|
29 | 29 |
|
30 | 30 | // first check if its even installed
|
31 |
| - fs.stat(versionPath, function (err) { |
| 31 | + try { |
| 32 | + await fs.promises.stat(versionPath) |
| 33 | + } catch (err) { |
32 | 34 | if (err) {
|
33 | 35 | if (err.code === 'ENOENT') {
|
34 |
| - callback(null, 'version was already uninstalled: ' + version) |
35 |
| - } else { |
36 |
| - callback(err) |
| 36 | + return 'version was already uninstalled: ' + version |
37 | 37 | }
|
38 |
| - return |
| 38 | + throw err |
39 | 39 | }
|
40 |
| - // Go ahead and delete the dir |
41 |
| - rm(versionPath, callback) |
42 |
| - }) |
| 40 | + } |
| 41 | + |
| 42 | + // Go ahead and delete the dir |
| 43 | + return util.promisify(rimraf)(versionPath) |
43 | 44 | }
|
44 | 45 |
|
45 |
| -module.exports = exports = remove |
| 46 | +module.exports = function (gyp, argv, callback) { |
| 47 | + return remove(gyp, argv).then(callback.bind(undefined, null), callback) |
| 48 | +} |
46 | 49 | module.exports.usage = 'Removes the node development files for the specified version'
|
0 commit comments