node-gyp: make aware of nightly, next-nightly & rc
authorRod Vagg <rod@vagg.org>
Fri, 26 Jun 2015 12:17:02 +0000 (22:17 +1000)
committerRod Vagg <rod@vagg.org>
Tue, 4 Aug 2015 18:56:15 +0000 (11:56 -0700)
A temporary fix only, node-gyp needs to be made more intelligent
upstream about figuring out where to find the download file by
inspecting the binary.

Floating patch on npm.

PR-URL: https://github.com/nodejs/io.js/pull/2066
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Ryan Graham <r.m.graham@gmail.com>
deps/npm/node_modules/node-gyp/lib/install.js

index cdee86e..ff22812 100644 (file)
@@ -39,8 +39,8 @@ function install (gyp, argv, callback) {
     }
   }
 
-  var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'https://iojs.org/dist'
-
+  var defaultUrl = getDefaultIojsUrl(process.version)
+  var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || defaultUrl
 
   // Determine which node dev files version we are installing
   var versionStr = argv[0] || gyp.opts.target || process.version
@@ -455,3 +455,26 @@ function install (gyp, argv, callback) {
   }
 
 }
+
+
+// pick out 'nightly', 'next-nightly' or 'rc' from the version string if it's there
+// adjust URL accordingly
+function getDefaultIojsUrl(version) {
+  var versionMatch = version.match(/^v\d+\.\d+\.\d+-(?:(?:(nightly|next-nightly)\d{8}[0-9a-f]{10})|(?:(rc)\d+))$/)
+  var distType = versionMatch ? versionMatch[1] || versionMatch[2] : 'release'
+  var defaultUrl = `https://iojs.org/download/${distType}`
+  return defaultUrl
+}
+
+
+if (require.main === module) {
+  var assert = require('assert')
+  console.log('test v2.3.4 -> https://iojs.org/download/release')
+  assert(getDefaultIojsUrl('v2.3.4', 'https://iojs.org/download/release'))
+  console.log('test v2.3.4-nightly12345678aaaaaaaaaa -> https://iojs.org/download/nightly')
+  assert(getDefaultIojsUrl('v2.3.4-nightly12345678aaaaaaaaaa', 'https://iojs.org/download/nightly'))
+  console.log('test v2.3.4-next-nightly12345678aaaaaaaaaa -> https://iojs.org/download/release/next-nightly')
+  assert(getDefaultIojsUrl('v2.3.4-next-nightly12345678aaaaaaaaaa', 'https://iojs.org/download/next-nightly'))
+  console.log('test v2.3.4-rc100 -> https://iojs.org/download/rc')
+  assert(getDefaultIojsUrl('v2.3.4-rc100', 'https://iojs.org/download/rc'))
+}