aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/node-gyp/lib/remove.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/node-gyp/lib/remove.js')
-rw-r--r--node_modules/node-gyp/lib/remove.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/node_modules/node-gyp/lib/remove.js b/node_modules/node-gyp/lib/remove.js
new file mode 100644
index 0000000..55736f7
--- /dev/null
+++ b/node_modules/node-gyp/lib/remove.js
@@ -0,0 +1,43 @@
+'use strict'
+
+const fs = require('graceful-fs').promises
+const path = require('path')
+const log = require('./log')
+const semver = require('semver')
+
+async function remove (gyp, argv) {
+ const devDir = gyp.devDir
+ log.verbose('remove', 'using node-gyp dir:', devDir)
+
+ // get the user-specified version to remove
+ let version = argv[0] || gyp.opts.target
+ log.verbose('remove', 'removing target version:', version)
+
+ if (!version) {
+ throw new Error('You must specify a version number to remove. Ex: "' + process.version + '"')
+ }
+
+ const versionSemver = semver.parse(version)
+ if (versionSemver) {
+ // flatten the version Array into a String
+ version = versionSemver.version
+ }
+
+ const versionPath = path.resolve(gyp.devDir, version)
+ log.verbose('remove', 'removing development files for version:', version)
+
+ // first check if its even installed
+ try {
+ await fs.stat(versionPath)
+ } catch (err) {
+ if (err.code === 'ENOENT') {
+ return 'version was already uninstalled: ' + version
+ }
+ throw err
+ }
+
+ await fs.rm(versionPath, { recursive: true, force: true, maxRetries: 3 })
+}
+
+module.exports = remove
+module.exports.usage = 'Removes the node development files for the specified version'