(src, dest, opts)
| 59 | } |
| 60 | |
| 61 | function getStats(src, dest, opts) { |
| 62 | // TODO(@anonrig): Avoid making two stat calls. |
| 63 | const statSyncFn = opts.dereference ? statSync : lstatSync; |
| 64 | const srcStat = statSyncFn(src); |
| 65 | const destStat = statSyncFn(dest, { bigint: true, throwIfNoEntry: false }); |
| 66 | |
| 67 | if (srcStat.isDirectory() && opts.recursive) { |
| 68 | return onDir(srcStat, destStat, src, dest, opts); |
| 69 | } else if (srcStat.isFile() || |
| 70 | srcStat.isCharacterDevice() || |
| 71 | srcStat.isBlockDevice()) { |
| 72 | return onFile(srcStat, destStat, src, dest, opts); |
| 73 | } else if (srcStat.isSymbolicLink()) { |
| 74 | return onLink(destStat, src, dest, opts.verbatimSymlinks); |
| 75 | } |
| 76 | |
| 77 | // It is not possible to get here because all possible cases are handled above. |
| 78 | const assert = require('internal/assert'); |
| 79 | assert.fail('Unreachable code'); |
| 80 | } |
| 81 | |
| 82 | function onFile(srcStat, destStat, src, dest, opts) { |
| 83 | if (!destStat) return copyFile(srcStat, src, dest, opts); |
no test coverage detected
searching dependent graphs…