Revision 5aef65a9 deps/npm/lib/utils/tar.js
deps/npm/lib/utils/tar.js | ||
---|---|---|
27 | 27 |
exports.pack = pack |
28 | 28 |
exports.unpack = unpack |
29 | 29 |
|
30 |
function pack (targetTarball, folder, pkg, dfc, cb) {
|
|
31 |
log.verbose("tar pack", [targetTarball, folder])
|
|
30 |
function pack (tarball, folder, pkg, dfc, cb) { |
|
31 |
log.verbose("tar pack", [tarball, folder]) |
|
32 | 32 |
if (typeof cb !== "function") cb = dfc, dfc = false |
33 | 33 |
|
34 |
log.verbose("tarball", targetTarball)
|
|
34 |
log.verbose("tarball", tarball) |
|
35 | 35 |
log.verbose("folder", folder) |
36 | 36 |
|
37 | 37 |
if (dfc) { |
38 | 38 |
// do fancy crap |
39 | 39 |
return lifecycle(pkg, "prepublish", folder, function (er) { |
40 | 40 |
if (er) return cb(er) |
41 |
pack_(targetTarball, folder, pkg, cb)
|
|
41 |
pack_(tarball, folder, pkg, cb) |
|
42 | 42 |
}) |
43 | 43 |
} else { |
44 |
pack_(targetTarball, folder, pkg, cb)
|
|
44 |
pack_(tarball, folder, pkg, cb) |
|
45 | 45 |
} |
46 | 46 |
} |
47 | 47 |
|
48 |
function pack_ (targetTarball, folder, pkg, cb_) { |
|
48 |
function pack_ (tarball, folder, pkg, cb_) { |
|
49 |
var tarballLock = false |
|
50 |
, folderLock = false |
|
51 |
|
|
49 | 52 |
function cb (er) { |
50 |
unlock(targetTarball, function () { |
|
51 |
return cb_(er) |
|
52 |
}) |
|
53 |
if (folderLock) |
|
54 |
unlock(folder, function() { |
|
55 |
folderLock = false |
|
56 |
cb(er) |
|
57 |
}) |
|
58 |
else if (tarballLock) |
|
59 |
unlock(tarball, function() { |
|
60 |
tarballLock = false |
|
61 |
cb(er) |
|
62 |
}) |
|
63 |
else |
|
64 |
cb_(er) |
|
53 | 65 |
} |
54 |
lock(targetTarball, function (er) { |
|
66 |
|
|
67 |
lock(folder, function(er) { |
|
55 | 68 |
if (er) return cb(er) |
69 |
folderLock = true |
|
70 |
next() |
|
71 |
}) |
|
72 |
|
|
73 |
lock(tarball, function (er) { |
|
74 |
if (er) return cb(er) |
|
75 |
tarballLock = true |
|
76 |
next() |
|
77 |
}) |
|
78 |
|
|
79 |
function next () { |
|
80 |
if (!tarballLock || !folderLock) return |
|
56 | 81 |
|
57 | 82 |
new Packer({ path: folder, type: "Directory", isDirectory: true }) |
58 | 83 |
.on("error", function (er) { |
... | ... | |
67 | 92 |
// non-compliant tar implementations. |
68 | 93 |
.pipe(tar.Pack({ noProprietary: !npm.config.get("proprietary-attribs") })) |
69 | 94 |
.on("error", function (er) { |
70 |
if (er) log.error("tar.pack", "tar creation error", targetTarball)
|
|
95 |
if (er) log.error("tar.pack", "tar creation error", tarball) |
|
71 | 96 |
cb(er) |
72 | 97 |
}) |
73 | 98 |
.pipe(zlib.Gzip()) |
74 | 99 |
.on("error", function (er) { |
75 |
if (er) log.error("tar.pack", "gzip error "+targetTarball)
|
|
100 |
if (er) log.error("tar.pack", "gzip error "+tarball) |
|
76 | 101 |
cb(er) |
77 | 102 |
}) |
78 |
.pipe(fstream.Writer({ type: "File", path: targetTarball }))
|
|
103 |
.pipe(fstream.Writer({ type: "File", path: tarball })) |
|
79 | 104 |
.on("error", function (er) { |
80 |
if (er) log.error("tar.pack", "Could not write "+targetTarball)
|
|
105 |
if (er) log.error("tar.pack", "Could not write "+tarball) |
|
81 | 106 |
cb(er) |
82 | 107 |
}) |
83 | 108 |
.on("close", cb) |
84 |
})
|
|
109 |
} |
|
85 | 110 |
} |
86 | 111 |
|
87 | 112 |
|
... | ... | |
101 | 126 |
function unpack_ ( tarball, unpackTarget, dMode, fMode, uid, gid, cb_ ) { |
102 | 127 |
var parent = path.dirname(unpackTarget) |
103 | 128 |
, base = path.basename(unpackTarget) |
129 |
, folderLock |
|
130 |
, tarballLock |
|
104 | 131 |
|
105 | 132 |
function cb (er) { |
106 |
unlock(unpackTarget, function () { |
|
107 |
return cb_(er) |
|
108 |
}) |
|
133 |
if (folderLock) |
|
134 |
unlock(unpackTarget, function() { |
|
135 |
folderLock = false |
|
136 |
cb(er) |
|
137 |
}) |
|
138 |
else if (tarballLock) |
|
139 |
unlock(tarball, function() { |
|
140 |
tarballLock = false |
|
141 |
cb(er) |
|
142 |
}) |
|
143 |
else |
|
144 |
cb_(er) |
|
109 | 145 |
} |
110 | 146 |
|
111 | 147 |
lock(unpackTarget, function (er) { |
112 | 148 |
if (er) return cb(er) |
113 |
rmGunz() |
|
149 |
folderLock = true |
|
150 |
next() |
|
114 | 151 |
}) |
115 | 152 |
|
153 |
lock(tarball, function (er) { |
|
154 |
if (er) return cb(er) |
|
155 |
tarballLock = true |
|
156 |
next() |
|
157 |
}) |
|
158 |
|
|
159 |
function next() { |
|
160 |
if (!tarballLock || !folderLock) return |
|
161 |
rmGunz() |
|
162 |
} |
|
163 |
|
|
116 | 164 |
function rmGunz () { |
117 | 165 |
rm(unpackTarget, function (er) { |
118 | 166 |
if (er) return cb(er) |
Also available in: Unified diff