Skip to content
This repository has been archived by the owner on Feb 14, 2024. It is now read-only.

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
Conflicts:
	config-defs.js
	package.json
  • Loading branch information
Victor Voisin committed Sep 23, 2014
2 parents 4142156 + c21a79a commit 7b95ea4
Show file tree
Hide file tree
Showing 24 changed files with 1,112 additions and 232 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/test/fixtures/userconfig-with-gc
.eslintrc
.jshintrc
177 changes: 83 additions & 94 deletions config-defs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ var path = require("path")
, semver = require("semver")
, stableFamily = semver.parse(process.version)
, nopt = require("nopt")
, os = require("os")
, osenv = require("osenv")

var log
try {
var log = require("npmlog")
log = require("npmlog")
} catch (er) {
var util = require('util')
var log = { warn: function (m) {
console.warn(m + util.format.apply(util, [].slice.call(arguments, 1)))
var util = require("util")
log = { warn: function (m) {
console.warn(m + ' ' + util.format.apply(util, [].slice.call(arguments, 1)))
} }
}

Expand All @@ -38,6 +40,12 @@ function validateSemver (data, k, val) {
data[k] = semver.valid(val)
}

function validateTag (data, k, val) {
val = ('' + val).trim()
if (!val || semver.validRange(val)) return false
data[k] = val
}

function validateStream (data, k, val) {
if (!(val instanceof Stream)) return false
data[k] = val
Expand All @@ -47,7 +55,11 @@ nopt.typeDefs.semver = { type: semver, validate: validateSemver }
nopt.typeDefs.Octal = { type: Octal, validate: validateOctal }
nopt.typeDefs.Stream = { type: Stream, validate: validateStream }

nopt.invalidHandler = function (k, val, type, data) {
// Don't let --tag=1.2.3 ever be a thing
var tag = {}
nopt.typeDefs.tag = { type: tag, validate: validateTag }

nopt.invalidHandler = function (k, val, type) {
log.warn("invalid config", k + "=" + JSON.stringify(val))

if (Array.isArray(type)) {
Expand All @@ -56,6 +68,9 @@ nopt.invalidHandler = function (k, val, type, data) {
}

switch (type) {
case tag:
log.warn("invalid config", "Tag must not be a SemVer range")
break
case Octal:
log.warn("invalid config", "Must be octal number, starting with 0")
break
Expand All @@ -74,8 +89,8 @@ nopt.invalidHandler = function (k, val, type, data) {
}
}

if (!stableFamily || (+stableFamily[2] % 2)) stableFamily = null
else stableFamily = stableFamily[1] + "." + stableFamily[2]
if (!stableFamily || (+stableFamily.minor % 2)) stableFamily = null
else stableFamily = stableFamily.major + "." + stableFamily.minor

var defaults

Expand Down Expand Up @@ -116,64 +131,9 @@ Object.defineProperty(exports, "defaults", {get: function () {
, "bin-links" : true
, browser : null

, ca : // the npm CA certificate.
[ "-----BEGIN CERTIFICATE-----\n"+
"MIIChzCCAfACCQDauvz/KHp8ejANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC\n"+
"VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMQwwCgYDVQQKEwNucG0x\n"+
"IjAgBgNVBAsTGW5wbSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxDjAMBgNVBAMTBW5w\n"+
"bUNBMRcwFQYJKoZIhvcNAQkBFghpQGl6cy5tZTAeFw0xMTA5MDUwMTQ3MTdaFw0y\n"+
"MTA5MDIwMTQ3MTdaMIGHMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNV\n"+
"BAcTB09ha2xhbmQxDDAKBgNVBAoTA25wbTEiMCAGA1UECxMZbnBtIENlcnRpZmlj\n"+
"YXRlIEF1dGhvcml0eTEOMAwGA1UEAxMFbnBtQ0ExFzAVBgkqhkiG9w0BCQEWCGlA\n"+
"aXpzLm1lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI4tIqPpRW+ACw9GE\n"+
"OgBlJZwK5f8nnKCLK629Pv5yJpQKs3DENExAyOgDcyaF0HD0zk8zTp+ZsLaNdKOz\n"+
"Gn2U181KGprGKAXP6DU6ByOJDWmTlY6+Ad1laYT0m64fERSpHw/hjD3D+iX4aMOl\n"+
"y0HdbT5m1ZGh6SJz3ZqxavhHLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAC4ySDbC\n"+
"l7W1WpLmtLGEQ/yuMLUf6Jy/vr+CRp4h+UzL+IQpCv8FfxsYE7dhf/bmWTEupBkv\n"+
"yNL18lipt2jSvR3v6oAHAReotvdjqhxddpe5Holns6EQd1/xEZ7sB1YhQKJtvUrl\n"+
"ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op\n"+
"-----END CERTIFICATE-----\n",

// "GlobalSign Root CA"
"-----BEGIN CERTIFICATE-----\n"+
"MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx\n"+
"GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds\n"+
"b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV\n"+
"BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD\n"+
"VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa\n"+
"DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc\n"+
"THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb\n"+
"Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP\n"+
"c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX\n"+
"gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n"+
"HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF\n"+
"AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj\n"+
"Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG\n"+
"j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH\n"+
"hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC\n"+
"X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n"+
"-----END CERTIFICATE-----\n",

// "GlobalSign Root CA - R2"
"-----BEGIN CERTIFICATE-----\n"+
"MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv\n"+
"YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh\n"+
"bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT\n"+
"aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln\n"+
"bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6\n"+
"ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp\n"+
"s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN\n"+
"S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL\n"+
"TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C\n"+
"ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E\n"+
"FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i\n"+
"YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN\n"+
"BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp\n"+
"9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu\n"+
"01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7\n"+
"9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7\n"+
"TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==\n"+
"-----END CERTIFICATE-----\n" ]

, ca: null
, cafile: null


, cache : cache
Expand All @@ -185,8 +145,10 @@ Object.defineProperty(exports, "defaults", {get: function () {
, "cache-max": Infinity
, "cache-min": 10

, cert: null


, color : true
, coverage: false
, depth: Infinity
, description : true
, dev : false
Expand All @@ -200,53 +162,61 @@ Object.defineProperty(exports, "defaults", {get: function () {
, "fetch-retry-maxtimeout": 60000

, git: "git"
, "git-tag-version": true

, global : false
, globalconfig : path.resolve(globalPrefix, "etc", "npmrc")
, globalignorefile : path.resolve( globalPrefix, "etc", "npmignore")
, group : process.platform === "win32" ? 0
: process.env.SUDO_GID || (process.getgid && process.getgid())
, ignore: ""
, "init-module": path.resolve(home, '.npm-init.js')
, "init.version" : "0.0.0"
, heading: "npm"
, "ignore-scripts": false
, "init-module": path.resolve(home, ".npm-init.js")
, "init.author.name" : ""
, "init.author.email" : ""
, "init.author.url" : ""
, "init.version": "1.0.0"
, "init.license": "ISC"
, json: false
, key: null
, link: false
, loglevel : "http"
, "local-address" : undefined
, loglevel : "warn"
, logstream : process.stderr
, long : false
, message : "%s"
, "node-version" : process.version
, "noproxy" : process.env.NO_PROXY || process.env.no_proxy || "null"
, npaturl : "http://npat.npmjs.org/"
, "noproxy" : process.env.NO_PROXY || process.env.no_proxy || ""
, npat : false
, "onload-script" : false
, optional: true
, parseable : false
, pre: false
, prefix : globalPrefix
, production: process.env.NODE_ENV === "production"
, "proprietary-attribs": true
, proxy : process.env.HTTP_PROXY || process.env.http_proxy || null
, "https-proxy" : process.env.HTTPS_PROXY || process.env.https_proxy ||
process.env.HTTP_PROXY || process.env.http_proxy || null
, "user-agent" : "node/" + process.version
+ ' ' + process.platform
+ ' ' + process.arch
, "user-agent" : "npm/{npm-version} "
+ "node/{node-version} "
+ "{platform} "
+ "{arch}"
, "rebuild-bundle" : true
, registry : "https://registry.npmjs.org/"
, rollback : true
, save : false
, "save-bundle": false
, "save-dev" : false
, "save-exact" : false
, "save-optional" : false
, "save-prefix": "^"
, scope : ""
, searchopts: ""
, searchexclude: null
, searchsort: "name"
, shell : osenv.shell()
, shrinkwrap: true
, "sign-git-tag": false
, spin: true
, "strict-ssl": true
, tag : "latest"
, tmp : temp
Expand All @@ -258,14 +228,11 @@ Object.defineProperty(exports, "defaults", {get: function () {
|| process.getuid() !== 0
, usage : false
, user : process.platform === "win32" ? 0 : "nobody"
, username : ""
, userconfig : path.resolve(home, ".npmrc")
, userignorefile : path.resolve(home, ".npmignore")
, umask: 022
, umask: process.umask ? process.umask() : parseInt("022", 8)
, version : false
, versions : false
, viewer: process.platform === "win32" ? "browser" : "man"
, yes: null

, _exit : true
}
Expand All @@ -276,14 +243,15 @@ exports.types =
, "bin-links": Boolean
, browser : [null, String]
, ca: [null, String, Array]
, cafile : path
, cache : path
, "cache-lock-stale": Number
, "cache-lock-retries": Number
, "cache-lock-wait": Number
, "cache-max": Number
, "cache-min": Number
, cert: [null, String]
, color : ["always", Boolean]
, coverage: Boolean
, depth : Number
, description : Boolean
, dev : Boolean
Expand All @@ -295,32 +263,36 @@ exports.types =
, "fetch-retry-mintimeout": Number
, "fetch-retry-maxtimeout": Number
, git: String
, "git-tag-version": Boolean
, global : Boolean
, globalconfig : path
, globalignorefile: path
, group : [Number, String]
, "https-proxy" : [null, url]
, "user-agent" : String
, ignore : String
, "heading": String
, "ignore-scripts": Boolean
, "init-module": path
, "init.version" : [null, semver]
, "init.author.name" : String
, "init.author.email" : String
, "init.author.url" : ["", url]
, "init.license": String
, "init.version": semver
, json: Boolean
, key: [null, String]
, link: Boolean
, loglevel : ["silent","win","error","warn","http","info","verbose","silly"]
// local-address must be listed as an IP for a local network interface
// must be IPv4 due to node bug
, "local-address" : getLocalAddresses()
, loglevel : ["silent","error","warn","http","info","verbose","silly"]
, logstream : Stream
, long : Boolean
, message: String
, "node-version" : [null, semver]
, "noproxy" : ["null", String]
, npaturl : url
, "noproxy" : String
, npat : Boolean
, "onload-script" : [null, String]
, optional: Boolean
, parseable : Boolean
, pre: Boolean
, prefix: path
, production: Boolean
, "proprietary-attribs": Boolean
Expand All @@ -331,7 +303,10 @@ exports.types =
, save : Boolean
, "save-bundle": Boolean
, "save-dev" : Boolean
, "save-exact" : Boolean
, "save-optional" : Boolean
, "save-prefix": String
, scope : String
, searchopts : String
, searchexclude: [null, String]
, searchsort: [ "name", "-name"
Expand All @@ -340,32 +315,44 @@ exports.types =
, "date", "-date"
, "keywords", "-keywords" ]
, shell : String
, shrinkwrap: Boolean
, "sign-git-tag": Boolean
, spin: ["always", Boolean]
, "strict-ssl": Boolean
, tag : String
, tag : tag
, tmp : path
, unicode : Boolean
, "unsafe-perm" : Boolean
, usage : Boolean
, user : [Number, String]
, username : String
, userconfig : path
, userignorefile : path
, umask: Octal
, version : Boolean
, versions : Boolean
, viewer: String
, yes: [false, null, Boolean]
, _exit : Boolean
, _password: String
}

function getLocalAddresses() {
Object.keys(os.networkInterfaces()).map(function (nic) {
return os.networkInterfaces()[nic].filter(function (addr) {
return addr.family === "IPv4"
})
.map(function (addr) {
return addr.address
})
}).reduce(function (curr, next) {
return curr.concat(next)
}, []).concat(undefined)
}

exports.shorthands =
{ s : ["--loglevel", "silent"]
, d : ["--loglevel", "info"]
, dd : ["--loglevel", "verbose"]
, ddd : ["--loglevel", "silly"]
, noreg : ["--no-registry"]
, N : ["--no-registry"]
, reg : ["--registry"]
, "no-reg" : ["--no-registry"]
, silent : ["--loglevel", "silent"]
Expand All @@ -390,8 +377,10 @@ exports.shorthands =
, g : ["--global"]
, S : ["--save"]
, D : ["--save-dev"]
, E : ["--save-exact"]
, O : ["--save-optional"]
, y : ["--yes"]
, n : ["--no-yes"]
, B : ["--save-bundle"]
, C : ["--prefix"]
}
Loading

0 comments on commit 7b95ea4

Please sign in to comment.