@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
91 lines (90 loc) • 3.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.kpySync = exports.kpy = void 0;
const path = require("path");
const js_lib_1 = require("@naturalcycles/js-lib");
const cpFile = require("cp-file");
const fs = require("fs-extra");
const moveFile = require("move-file");
const colors_1 = require("../colors");
const index_1 = require("../index");
async function kpy(opt) {
const started = Date.now();
kpyPrepare(opt);
const filenames = await (0, index_1.globby)(opt.inputPatterns, {
cwd: opt.baseDir,
dot: opt.dotfiles,
});
kpyLogFilenames(opt, filenames);
const overwrite = !opt.noOverwrite;
await Promise.all(filenames.map(async (filename) => {
const basename = path.basename(filename);
const srcFilename = path.resolve(opt.baseDir, filename);
const destFilename = path.resolve(opt.outputDir, opt.flat ? basename : filename);
if (!opt.dry) {
if (opt.move) {
await moveFile(srcFilename, destFilename, { overwrite });
}
else {
await cpFile(srcFilename, destFilename, { overwrite });
}
}
if (opt.verbose) {
console.log((0, colors_1.grey)(` ${filename}`));
}
}));
kpyLogResult(opt, filenames, started);
}
exports.kpy = kpy;
function kpySync(opt) {
const started = Date.now();
kpyPrepare(opt);
const filenames = index_1.globby.sync(opt.inputPatterns, {
cwd: opt.baseDir,
dot: opt.dotfiles,
});
kpyLogFilenames(opt, filenames);
const overwrite = !opt.noOverwrite;
filenames.forEach(filename => {
const basename = path.basename(filename);
const srcFilename = path.resolve(opt.baseDir, filename);
const destFilename = path.resolve(opt.outputDir, opt.flat ? basename : filename);
if (!opt.dry) {
if (opt.move) {
moveFile.sync(srcFilename, destFilename, { overwrite });
}
else {
cpFile.sync(srcFilename, destFilename, { overwrite });
}
}
if (opt.verbose) {
console.log((0, colors_1.grey)(` ${filename}`));
}
});
kpyLogResult(opt, filenames, started);
}
exports.kpySync = kpySync;
function kpyPrepare(opt) {
// Default pattern
if (!opt.inputPatterns?.length)
opt.inputPatterns = ['**'];
// default to cwd
opt.baseDir || (opt.baseDir = '.');
opt.outputDir || (opt.outputDir = '.');
if (!fs.existsSync(opt.baseDir)) {
console.log(`kpy: baseDir doesn't exist: ${(0, colors_1.boldWhite)(opt.baseDir)}`);
return;
}
fs.ensureDirSync(opt.outputDir);
}
function kpyLogFilenames(opt, filenames) {
if (opt.silent)
return;
// console.log({filenames})
console.log(`Will ${opt.move ? 'move' : 'copy'} ${(0, colors_1.yellow)(filenames.length)} files from ${(0, colors_1.dimGrey)(opt.baseDir)} to ${(0, colors_1.dimGrey)(opt.outputDir)} (${(0, colors_1.dimGrey)(opt.inputPatterns.join(' '))})`);
}
function kpyLogResult(opt, filenames, started) {
if (opt.silent || filenames.length === 0)
return;
console.log(`${opt.move ? 'Moved' : 'Copied'} ${(0, colors_1.yellow)(filenames.length)} files to ${(0, colors_1.dimGrey)(opt.outputDir)} ${(0, colors_1.dimGrey)((0, js_lib_1._since)(started))}`);
}
;