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