UNPKG

@naturalcycles/nodejs-lib

Version:
91 lines (90 loc) 3.4 kB
"use strict"; 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))}`); }