Browse Source

lib/copy/ncp: preserve mode

ci/travis-osximage
JP Richardson 9 years ago
parent
commit
082aa7f4ba
  1. 4
      CHANGELOG.md
  2. 29
      lib/copy/ncp.js

4
CHANGELOG.md

@ -1,3 +1,7 @@
0.22.0 / 2015-xx-yy
-------------------
- preserve mode in `copy()`
0.21.0 / 2015-07-04
-------------------
- add option to preserve timestamps in `copy()` and `copySync()`. See: https://github.com/jprichardson/node-fs-extra/pull/141

29
lib/copy/ncp.js

@ -63,7 +63,8 @@ function ncp (source, dest, options, callback) {
name: source,
mode: stats.mode,
mtime: stats.mtime, // modified time
atime: stats.atime // access time
atime: stats.atime, // access time
stats: stats // temporary
}
if (stats.isDirectory()) {
@ -110,14 +111,17 @@ function ncp (source, dest, options, callback) {
}
writeStream.once('finish', function () {
if (preserveTimestamps) {
utimes.utimesMillis(target, file.atime, file.mtime, function (err) {
if (err) return onError(err)
return doneOne()
})
} else {
doneOne()
}
fs.chmod(target, file.mode, function (err) {
if (err) return onError(err)
if (preserveTimestamps) {
utimes.utimesMillis(target, file.atime, file.mtime, function (err) {
if (err) return onError(err)
return doneOne()
})
} else {
doneOne()
}
})
})
}
@ -141,7 +145,12 @@ function ncp (source, dest, options, callback) {
function mkDir (dir, target) {
fs.mkdir(target, dir.mode, function (err) {
if (err) return onError(err)
copyDir(dir.name)
// despite setting mode in fs.mkdir, doesn't seem to work
// so we set it here.
fs.chmod(target, dir.mode, function (err) {
if (err) return onError(err)
copyDir(dir.name)
})
})
}

Loading…
Cancel
Save