mirror of
https://github.com/jprichardson/node-fs-extra.git
synced 2026-01-25 16:42:57 +00:00
Added symlinks copy in copySync
This commit is contained in:
parent
e8456ee00a
commit
e1c305699e
10
lib/copy.js
10
lib/copy.js
@ -57,9 +57,10 @@ function copy(src, dest, filter, callback) {
|
||||
})
|
||||
}
|
||||
|
||||
function copySync(src, dest, filter) {
|
||||
function copySync(src, dest, filter, recursive) {
|
||||
filter = filter || function () { return true; };
|
||||
var stats = fs.lstatSync(src),
|
||||
recursive = recursive || false;
|
||||
var stats = recursive ? fs.lstatSync(src) : fs.statSync(src),
|
||||
destFolder = path.dirname(dest),
|
||||
destFolderExists = fs.exists(destFolder),
|
||||
performCopy = false;
|
||||
@ -75,7 +76,10 @@ function copySync(src, dest, filter) {
|
||||
if (!destFolderExists) mkdir.mkdirsSync(dest);
|
||||
var contents = fs.readdirSync(src);
|
||||
contents.forEach(function (content) {
|
||||
copySync(src + "/" + content, dest + "/" + content, filter);
|
||||
copySync(src + "/" + content, dest + "/" + content, filter, true);
|
||||
});
|
||||
} else if (recursive && stats.isSymbolicLink()) {
|
||||
var srcPath = fs.readlinkSync(src);
|
||||
fs.symlinkSync(srcPath, dest);
|
||||
}
|
||||
}
|
||||
|
||||
@ -254,6 +254,21 @@ describe('fs-extra', function() {
|
||||
done();
|
||||
});
|
||||
|
||||
it("should follow symlinks", function (done) {
|
||||
var fileSrc = path.join(DIR, "TEST_fs-extra_src")
|
||||
, fileDest = path.join(DIR, "TEST_fs-extra_copy")
|
||||
, linkSrc = path.join(DIR, "TEST_fs-extra_copy_link")
|
||||
, fileSrc = testutil.createFileWithData(fileSrc, SIZE)
|
||||
, srcMd5 = crypto.createHash('md5').update(fs.readFileSync(fileSrc)).digest("hex")
|
||||
, destMd5 = '';
|
||||
|
||||
fs.symlinkSync(fileSrc, linkSrc);
|
||||
fs.copySync(linkSrc, fileDest);
|
||||
destMd5 = crypto.createHash('md5').update(fs.readFileSync(fileDest)).digest("hex");
|
||||
T(srcMd5 === destMd5);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should maintain file mode", function (done) {
|
||||
var fileSrc = path.join(DIR, "TEST_fs-extra_src")
|
||||
, fileDest = path.join(DIR, "TEST_fs-extra_copy")
|
||||
@ -341,6 +356,22 @@ describe('fs-extra', function() {
|
||||
done()
|
||||
});
|
||||
|
||||
it("should preserve symbolic links", function(done) {
|
||||
var FILES = 2,
|
||||
src = path.join(DIR, 'src'),
|
||||
dest = path.join(DIR, 'dest'),
|
||||
i, j;
|
||||
mkdir.sync(src);
|
||||
fs.symlinkSync('destination', path.join(src, 'symlink'));
|
||||
|
||||
fs.copySync(src, dest);
|
||||
|
||||
var link = fs.readlinkSync(path.join(dest, 'symlink'));
|
||||
EQ (link, 'destination');
|
||||
|
||||
done()
|
||||
});
|
||||
|
||||
it("should should apply filter recursively", function(done) {
|
||||
var FILES = 2
|
||||
var src = path.join(DIR, 'src')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user