mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
873 B
25 lines
873 B
|
|
module.exports = set
|
|
var get = require("./get.js")
|
|
, processJson = require("./read-json.js").processJson
|
|
function set (obj, key, val) {
|
|
for (var i in obj) {
|
|
if (i.toLowerCase() === key.toLowerCase()) return obj[i] = val
|
|
}
|
|
obj[key] = val
|
|
if (!val) return
|
|
// if it's a package set, then assign all the versions.
|
|
if (val.versions) return Object.keys(val.versions).forEach(function (v) {
|
|
if (typeof val.versions[v] !== "object") return
|
|
set(obj, key+"@"+v, val.versions[v])
|
|
})
|
|
// Note that this doesn't put the dist-tags there, only updates the versions
|
|
if (key === val.name+"@"+val.version) {
|
|
processJson(val)
|
|
var reg = get(obj, val.name) || {}
|
|
reg.name = reg._id = val.name
|
|
set(obj, val.name, reg)
|
|
reg.versions = get(reg, "versions") || {}
|
|
if (!get(reg.versions, val.version)) set(reg.versions, val.version, val)
|
|
}
|
|
}
|
|
|