123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /**
- * @author Toru Nagashima
- * @copyright 2016 Toru Nagashima. All rights reserved.
- * See LICENSE file in root directory for full license.
- */
- "use strict";
- var _require = require("safe-buffer");
- var Buffer = _require.Buffer;
- var fs = require("fs");
- var mkdirSync = require("mkdirp").sync;
- var MAX_BUFFER = 2048;
- /**
- * @param {string} src - A path of the source file.
- * @param {string} dst - A path of the destination file.
- * @returns {void}
- * @private
- */
- function copyBodySync(src, dst) {
- var buffer = Buffer.allocUnsafe(MAX_BUFFER);
- var bytesRead = MAX_BUFFER;
- var pos = 0;
- var input = fs.openSync(src, "r");
- try {
- var output = fs.openSync(dst, "w");
- try {
- while (MAX_BUFFER === bytesRead) {
- bytesRead = fs.readSync(input, buffer, 0, MAX_BUFFER, pos);
- fs.writeSync(output, buffer, 0, bytesRead);
- pos += bytesRead;
- }
- } finally {
- fs.closeSync(output);
- }
- } finally {
- fs.closeSync(input);
- }
- }
- /**
- * @param {string} src - A path of the source file.
- * @param {string} dst - A path of the destination file.
- * @param {object} options - Options.
- * @param {boolean} options.preserve - The flag to copy attributes.
- * @param {boolean} options.update - The flag to disallow overwriting.
- * @returns {void}
- * @private
- */
- module.exports = function copySync(src, dst, _ref) {
- var preserve = _ref.preserve;
- var update = _ref.update;
- var stat = fs.statSync(src);
- if (update) {
- try {
- var dstStat = fs.statSync(dst);
- if (dstStat.mtime.getTime() > stat.mtime.getTime()) {
- // Don't overwrite because the file on destination is newer than
- // the source file.
- return;
- }
- } catch (_err) {
- // ignore - The file may not exist.
- }
- }
- if (stat.isDirectory()) {
- mkdirSync(dst);
- } else {
- copyBodySync(src, dst);
- }
- fs.chmodSync(dst, stat.mode);
- if (preserve) {
- fs.chownSync(dst, stat.uid, stat.gid);
- fs.utimesSync(dst, stat.atime, stat.mtime);
- }
- };
|