Skip to content

Commit 539fc5b

Browse files
committed
Use "name@version" rather than "name-version". Everywhere.
This also affects the folders and files created for modules, man pages, and executables. I'm pretty sure the tests cover all the relevant issues, but expect a bit of regression.
1 parent a6644c7 commit 539fc5b

File tree

12 files changed

+73
-48
lines changed

12 files changed

+73
-48
lines changed

lib/activate.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,19 @@ function activate (args, cb) {
4242
, toMain = path.join(npm.root, d.name+".js")
4343
shimIfExists(fromMain, toMain, cb)
4444
}
45+
// todo: remove this step. 0.1.28
46+
// required because old deps will be linked with - rather than @
4547
, function (d, cb) {
4648
var fromLib = path.join(npm.root, d.name + "-" + d.version)
4749
, toLib = path.join(npm.root, d.name)
4850
linkIfExists(fromLib, toLib, cb)
4951
}
52+
// if both @ and - exist, then this will overwrite the kludge one.
53+
, function (d, cb) {
54+
var fromLib = path.join(npm.root, d.name + "@" + d.version)
55+
, toLib = path.join(npm.root, d.name)
56+
linkIfExists(fromLib, toLib, cb)
57+
}
5058
, linkBins
5159
, linkMans
5260
, function (er) {
@@ -90,7 +98,7 @@ function preActivate (arg, cb) {
9098
readJson(jsonFile, function (er, data) {
9199
if (er) return cb(er)
92100
data.version = version
93-
data._id = data.name + "-" + data.version
101+
data._id = data.name + "@" + data.version
94102
npm.set(data)
95103
loadPackageDefaults(data, function (er, data) {
96104
if (er) return cb(er)
@@ -117,11 +125,13 @@ function linkMans (pkg, cb) {
117125
, (bn.indexOf(pkg.name) === 0 ? bn
118126
: pkg.name + "-" + bn)
119127
)
120-
, manSrc = manStem + "-" + pkg.version + "." + sxn + gz
128+
, suff = pkg.version + "." + sxn + gz
121129
, manDest = manStem + "." + sxn + gz
122-
log.silly(manSrc, "manSrc")
123130
log.silly(manDest, "manDest")
124-
linkIfExists(manSrc, manDest, cb)
131+
linkIfExists(manStem+"-"+suff, manDest, function (er) {
132+
if (er) return cb(er)
133+
linkIfExists(manStem+"@"+suff, manDest, cb)
134+
})
125135
}, cb)
126136
}
127137
function linkBins (pkg, cb) {
@@ -131,7 +141,10 @@ function linkBins (pkg, cb) {
131141
if (!pkg.bin || !binroot) return cb()
132142
asyncMap(Object.keys(pkg.bin), function (i, cb) {
133143
var to = path.join(binroot, i)
134-
, from = to+"-"+pkg.version
135-
linkIfExists(from, to, cb)
144+
, v = pkg.version
145+
linkIfExists(to+"-"+v, to, function (er) {
146+
if (er) return cb(er)
147+
linkIfExists(to+"@"+v, to, cb)
148+
})
136149
}, cb)
137150
}

lib/build.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ function build (args, cb) {
5757
function buildStep (pkg, cb) {
5858
pkg = pkg && pkg._data || pkg
5959
if (!pkg) return cb(new Error("Invalid package data "+sys.inspect(pkg)))
60-
linkModules(pkg, path.join(npm.root, pkg.name+"-"+pkg.version), cb)
60+
linkModules(pkg, path.join(npm.root, pkg.name+"@"+pkg.version), cb)
6161
linkBins(pkg, cb)
6262
linkMans(pkg, cb)
6363
}
@@ -166,7 +166,7 @@ function linkDependencies (args, cb) {
166166
function dependentLink (pkg, cb) {
167167
asyncMap(pkg._resolvedDeps, function (dep, cb) {
168168
var dependents = path.join(npm.dir, dep.name, dep.version, "dependents")
169-
, to = path.join(dependents, pkg.name + "-" + pkg.version)
169+
, to = path.join(dependents, pkg.name + "@" + pkg.version)
170170
, from = path.join(npm.dir, pkg.name, pkg.version)
171171
link(from, to, cb)
172172
}, cb)
@@ -180,15 +180,13 @@ function dependencyLink (pkg, cb) {
180180
asyncMap(pkg._resolvedDeps, function (dep, cb) {
181181
var depDir = path.join(npm.dir, dep.name, dep.version, "package")
182182
, dependsOn = path.join( npm.dir, pkg.name, pkg.version
183-
, "dependson", dep.name + "-" + dep.version
183+
, "dependson", dep.name + "@" + dep.version
184184
)
185185
, fromRoot = path.join(npm.dir, dep.name, dep.version)
186-
, fromLib = path.join(npm.root, dep.name + "-" + dep.version)
187186
, toLib = path.join(dependencies, dep.name)
188187
, linkToLib = (dep.name in pkg.link)
189188
? path.join(npm.dir, pkg.name, pkg.version, "package", pkg.link[dep.name])
190189
: null
191-
log.silly(fromLib, "dependency")
192190
log.silly(dep, "dependency")
193191
log.silly(toLib, "dependency")
194192
readJson(path.join(depDir, "package.json"), function (er, dep) {
@@ -232,7 +230,7 @@ function linkMans (pkg, cb) {
232230
, "man"+sxn
233231
, (bn.indexOf(pkg.name) === 0 ? bn
234232
: pkg.name + "-" + bn)
235-
+ "-" + pkg.version
233+
+ "@" + pkg.version
236234
+ "." + sxn + gz
237235
)
238236
// ln {cwd}/man {manroot}/man{sxn}/{bn}-{ver}.{sxn}{gz}
@@ -283,7 +281,7 @@ function linkBins (pkg, cb) {
283281
return i.charAt(0) !== "_"
284282
}), function (i, cb) {
285283
log.verbose(i+" "+pkg.bin[i], "linkBin")
286-
var to = path.join(binroot, i+"-"+pkg.version)
284+
var to = path.join(binroot, i+"@"+pkg.version)
287285
, from = path.join(npm.dir, pkg.name, pkg.version, "package", pkg.bin[i])
288286
shimTest(from, to, dep, cb)
289287
}, log.er(cb, "failed to link bins"))

lib/cache.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ function read (name, ver, cb) {
3939
if (!er) cacheSeen[data._id] = data
4040
return cb(er, data)
4141
}
42-
if (name+"-"+ver in cacheSeen) {
43-
return cb(null, cacheSeen[name+"-"+ver])
42+
if (name+"@"+ver in cacheSeen) {
43+
return cb(null, cacheSeen[name+"@"+ver])
4444
}
4545
readJson(jsonFile, function (er, data) {
4646
if (er) return addNameVersion(name, ver, c)

lib/deactivate.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function preDeactivate (pkg, cb) {
7979
readJson(jsonFile, function (er, data) {
8080
if (er) return cb(er)
8181
data.version = version
82-
data._id = data.name+"-"+data.version
82+
data._id = data.name+"@"+data.version
8383
npm.set(data)
8484
loadPackageDefaults(data, function (er, data) {
8585
if (er) return cb(er)

lib/rebuild.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function rebuild (args, cb) {
2525
readJson(path.join(npm.dir, n, v, "package", "package.json"), function (er, data) {
2626
if (er) return cb(er)
2727
data.version = v
28-
data._id = data.name + "-" + data.version
28+
data._id = data.name + "@" + data.version
2929
loadPackageDefaults(data, cb)
3030
})
3131
}, function (er, args) {

lib/uninstall.js

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ function unpackArgs (rawArgs, cb) {
6464
loadPackageDefaults(data, function (er, data) {
6565
if (er) return cb(er)
6666
data.version = arg[1]
67-
data._id = data.name+"-"+data.version
67+
data._id = data.name+"@"+data.version
6868
argData.push(data)
6969
argData[data._id] = data
7070
R(args.pop())
@@ -140,12 +140,20 @@ function secondPart (args, cb) {
140140
, removeBins
141141
, rmMans
142142
, function (a, cb) { log.verbose("remove public modules", "uninstall "+a._id, cb) }
143+
// todo: remove this kludge v0.1.28
143144
, function (arg, cb) {
144145
rm(path.join(npm.root, arg.name+"-"+arg.version), cb)
145146
}
147+
// todo: remove this kludge v0.1.28
146148
, function (arg, cb) {
147149
rm(path.join(npm.root, arg.name+"-"+arg.version+".js"), cb)
148150
}
151+
, function (arg, cb) {
152+
rm(path.join(npm.root, arg.name+"@"+arg.version), cb)
153+
}
154+
, function (arg, cb) {
155+
rm(path.join(npm.root, arg.name+"@"+arg.version+".js"), cb)
156+
}
149157
]
150158
, [ lifecycle, arg, "postuninstall" ]
151159
, [ log.verbose, "remove package dir", "uninstall "+arg._id]
@@ -172,21 +180,27 @@ function rmMans (pkg, cb) {
172180
, sxn = parseMan[2]
173181
, gz = parseMan[3] || ""
174182
, bn = path.basename(stem)
175-
rm(path.join( manroot
176-
, "man"+sxn
177-
, (bn.indexOf(pkg.name) === 0 ? bn
178-
: pkg.name + "-" + bn)
179-
+ "-" + pkg.version
180-
+ "." + sxn + gz
181-
), cb)
183+
, mp = path.join( manroot
184+
, "man"+sxn
185+
, (bn.indexOf(pkg.name) === 0 ? bn
186+
: pkg.name + "-" + bn)
187+
)
188+
, suff = pkg.version + "." + sxn + gz
189+
// todo: remove this kludge v0.1.28
190+
// just do the "@" only.
191+
asyncMap([mp+"-"+suff, mp+"@"+suff], rm, cb)
182192
}, cb)
183193
}
184194
function removeBins (data, cb) {
185195
if (!data.bin) return cb()
186196
var binroot = npm.config.get("binroot")
187197
asyncMap(Object.keys(data.bin), function (bin, cb) {
188198
if (!bin) return cb()
189-
rm(binroot + "/" + bin+"-"+data.version, cb)
199+
var p = binroot + "/" + bin
200+
, v = data.version
201+
// todo: remove this kludge v0.1.28
202+
// just do the "@" only.
203+
asyncMap([p+"@"+v, p+"-"+v], rm, cb)
190204
}, cb)
191205
}
192206
function removeDependentLinks (data, cb) {
@@ -197,17 +211,14 @@ function removeDependentLinks (data, cb) {
197211
if (er) return cb() // meh
198212
fs.readdir(dependsOn, function (er, deps) {
199213
if (er) return cb(er)
200-
;(function R (er) {
201-
if (er) return cb(er)
202-
var dep = deps.pop()
203-
if (!dep) return cb()
214+
asyncMap(deps, function (dep, cb) {
204215
// <3 symlinks
205-
rm(path.join( dependsOn
206-
, dep
207-
, "dependents"
208-
, data.name+"-"+data.version
209-
), R)
210-
})()
216+
var p = path.join(dependsOn, dep, "dependents", data.name)
217+
, v = data.version
218+
// todo: remove this kludge v0.1.28
219+
// just do the "@" only.
220+
asyncMap([p+"@"+v, p+"-"+v], rm, cb)
221+
}, cb)
211222
})
212223
})
213224
}

lib/update-dependents.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ function updateOtherVersionDeps (other, pkg, cb) {
9292
if (!deps.length) return cb()
9393
asyncMap(deps, function (d, cb) {
9494
// todo: make this a @ instead of a -
95-
d = d.split("-")
95+
d = d.split("@")
9696
var name = d.shift()
97-
, ver = d.join("-")
97+
, ver = d.join("@")
9898
return updateDepToNew(name, ver, pkg, other, cb)
9999
}, cb)
100100
})
@@ -138,21 +138,24 @@ function updateDepToNew (depName, depVer, pkg, other, cb) {
138138

139139
function removeDependencyLinks (dep, pkg, other, cb) {
140140
var depdir = path.join(npm.dir, dep.name, dep.version)
141-
, depsOn = path.join(depdir, "dependson", pkg.name+"-"+other)
141+
// todo: remove this kludge. v0.1.28
142+
// only support "@", not "-"
143+
, depsOnOld = path.join(depdir, "dependson", pkg.name+"-"+other)
144+
, depsOn = path.join(depdir, "dependson", pkg.name+"@"+other)
142145
, deps = path.join(depdir, "dependencies", pkg.name)
143146
, dependentLink = path.join( npm.dir
144147
, pkg.name
145148
, other
146149
, "dependents"
147150
, dep.name + "-" + dep.version
148151
)
149-
asyncMap([deps+"js", deps, depsOn, dependentLink], rm, cb)
152+
asyncMap([deps+"js", deps, depsOnOld, depsOn, dependentLink], rm, cb)
150153
}
151154
function createDependencyLinks (dep, pkg, cb) {
152155
var depdir = path.join(npm.dir, dep.name, dep.version)
153156
, depsOn = path.join( depdir
154157
, "dependson"
155-
, pkg.name+"-"+pkg.version
158+
, pkg.name+"@"+pkg.version
156159
)
157160
, deps = path.join(depdir, "dependencies", pkg.name)
158161
, targetRoot = path.join(npm.dir, pkg.name, pkg.version)
@@ -162,7 +165,7 @@ function createDependencyLinks (dep, pkg, cb) {
162165
, pkg.name
163166
, pkg.version
164167
, "dependents"
165-
, dep.name + "-" + dep.version
168+
, dep.name + "@" + dep.version
166169
)
167170
asyncMap
168171
( [ [ link, targetRoot, depsOn ]

lib/utils/lifecycle.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ function cmd (stage, req) { return function (args, cb_) {
125125
if (er) return log.er(cb, "Couldn't find "+name + "@" + ver)(er)
126126
if (ver && ver !== data.version) {
127127
data.version = ver
128-
data._id = data.name+"-"+ver
128+
data._id = data.name+"@"+ver
129129
}
130130
if ( !data.scripts
131131
|| !(stage in data.scripts)

lib/utils/read-json.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ function processObject (opts, cb) { return function (er, json) {
126126
json[d] = depObjectify(json[d])
127127
})
128128

129-
json._id = json.name+"-"+json.version
129+
json._id = json.name+"@"+json.version
130130
json = testEngine(json)
131131
json = parsePeople(json)
132132
if (opts.file) {

lib/utils/registry/publish.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ function publish (data, cb) {
3434
}
3535
]
3636
}
37-
data._id = data.name+"-"+data.version
37+
data._id = data.name+"@"+data.version
3838
var attURI = encodeURIComponent(data.name)
3939
+ "/-/"
4040
+ encodeURIComponent(data.name)
41-
+ "-"
41+
+ "@"
4242
+ encodeURIComponent(data.version)
4343
+ ".tgz"
4444
data.dist = { "tarball" : url.resolve(npm.config.get("registry"), attURI) }

0 commit comments

Comments
 (0)