preact-material-components
Version:
preact wrapper for "Material Components for the web"
84 lines (73 loc) • 2.19 kB
JavaScript
/**
* @author Toru Nagashima
* @copyright 2016 Toru Nagashima. All rights reserved.
* See LICENSE file in root directory for full license.
*/
;
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);
}
};