Lines Matching refs:dest
51 function cpSyncFn(src, dest, opts) {
58 const { srcStat, destStat, skipped } = checkPathsSync(src, dest, opts);
60 checkParentPathsSync(src, srcStat, dest);
61 return checkParentDir(destStat, src, dest, opts);
64 function checkPathsSync(src, dest, opts) {
66 const shouldCopy = opts.filter(src, dest);
72 const { srcStat, destStat } = getStatsSync(src, dest, opts);
77 message: 'src and dest cannot be the same',
78 path: dest,
87 `with non-directory ${dest}`,
88 path: dest,
97 `with directory ${dest}`,
98 path: dest,
106 if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
108 message: `cannot copy ${src} to a subdirectory of self ${dest}`,
109 path: dest,
118 function getStatsSync(src, dest, opts) {
125 destStat = statFunc(dest);
133 function checkParentPathsSync(src, srcStat, dest) {
135 const destParent = resolve(dirname(dest));
146 message: `cannot copy ${src} to a subdirectory of self ${dest}`,
147 path: dest,
156 function checkParentDir(destStat, src, dest, opts) {
157 const destParent = dirname(dest);
159 return getStats(destStat, src, dest, opts);
162 function getStats(destStat, src, dest, opts) {
167 return onDir(srcStat, destStat, src, dest, opts);
179 return onFile(srcStat, destStat, src, dest, opts);
181 return onLink(destStat, src, dest, opts);
184 message: `cannot copy a socket file: ${dest}`,
185 path: dest,
192 message: `cannot copy a FIFO pipe: ${dest}`,
193 path: dest,
200 message: `cannot copy an unknown file type: ${dest}`,
201 path: dest,
208 function onFile(srcStat, destStat, src, dest, opts) {
209 if (!destStat) return copyFile(srcStat, src, dest, opts);
210 return mayCopyFile(srcStat, src, dest, opts);
213 function mayCopyFile(srcStat, src, dest, opts) {
215 unlinkSync(dest);
216 return copyFile(srcStat, src, dest, opts);
219 message: `${dest} already exists`,
220 path: dest,
228 function copyFile(srcStat, src, dest, opts) {
229 copyFileSync(src, dest, opts.mode);
230 if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest);
231 return setDestMode(dest, srcStat.mode);
234 function handleTimestamps(srcMode, src, dest) {
238 if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode);
239 return setDestTimestamps(src, dest);
246 function makeFileWritable(dest, srcMode) {
247 return setDestMode(dest, srcMode | 0o200);
250 function setDestMode(dest, srcMode) {
251 return chmodSync(dest, srcMode);
254 function setDestTimestamps(src, dest) {
259 return utimesSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime);
262 function onDir(srcStat, destStat, src, dest, opts) {
263 if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts);
264 return copyDir(src, dest, opts);
267 function mkDirAndCopy(srcMode, src, dest, opts) {
268 mkdirSync(dest);
269 copyDir(src, dest, opts);
270 return setDestMode(dest, srcMode);
273 function copyDir(src, dest, opts) {
282 const destItem = join(dest, name);
291 function onLink(destStat, src, dest, opts) {
297 return symlinkSync(resolvedSrc, dest);
301 resolvedDest = readlinkSync(dest);
304 // Windows may throw UNKNOWN error. If dest already exists,
307 return symlinkSync(resolvedSrc, dest);
312 resolvedDest = resolve(dirname(dest), resolvedDest);
318 path: dest,
324 // Prevent copy if src is a subdir of dest since unlinking
325 // dest in this case would result in removing src contents
327 if (statSync(dest).isDirectory() && isSrcSubdir(resolvedDest, resolvedSrc)) {
330 path: dest,
336 return copyLink(resolvedSrc, dest);
339 function copyLink(resolvedSrc, dest) {
340 unlinkSync(dest);
341 return symlinkSync(resolvedSrc, dest);