Skip to content

Commit 3d3f97b

Browse files
committed
feat: promisify remove
An effort to modernize the code
1 parent 0da2e01 commit 3d3f97b

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

lib/remove.js

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,49 @@
11
'use strict'
22

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')
56
const path = require('path')
67
const log = require('npmlog')
78
const semver = require('semver')
89

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)
1212

1313
// get the user-specified version to remove
14-
var version = argv[0] || gyp.opts.target
14+
let version = argv[0] || gyp.opts.target
1515
log.verbose('remove', 'removing target version:', version)
1616

1717
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}"`)
1919
}
2020

21-
var versionSemver = semver.parse(version)
21+
const versionSemver = semver.parse(version)
2222
if (versionSemver) {
2323
// flatten the version Array into a String
2424
version = versionSemver.version
2525
}
2626

27-
var versionPath = path.resolve(gyp.devDir, version)
27+
const versionPath = path.resolve(gyp.devDir, version)
2828
log.verbose('remove', 'removing development files for version:', version)
2929

3030
// first check if its even installed
31-
fs.stat(versionPath, function (err) {
31+
try {
32+
await fs.promises.stat(versionPath)
33+
} catch (err) {
3234
if (err) {
3335
if (err.code === 'ENOENT') {
34-
callback(null, 'version was already uninstalled: ' + version)
35-
} else {
36-
callback(err)
36+
return 'version was already uninstalled: ' + version
3737
}
38-
return
38+
throw err
3939
}
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)
4344
}
4445

45-
module.exports = exports = remove
46+
module.exports = function (gyp, argv, callback) {
47+
return remove(gyp, argv).then(callback.bind(undefined, null), callback)
48+
}
4649
module.exports.usage = 'Removes the node development files for the specified version'

0 commit comments

Comments
 (0)