UNPKG

3.4 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.kpySync = exports.kpy = void 0;
4const path = require("path");
5const js_lib_1 = require("@naturalcycles/js-lib");
6const cpFile = require("cp-file");
7const fs = require("fs-extra");
8const moveFile = require("move-file");
9const colors_1 = require("../colors");
10const index_1 = require("../index");
11async function kpy(opt) {
12 const started = Date.now();
13 kpyPrepare(opt);
14 const filenames = await (0, index_1.globby)(opt.inputPatterns, {
15 cwd: opt.baseDir,
16 dot: opt.dotfiles,
17 });
18 kpyLogFilenames(opt, filenames);
19 const overwrite = !opt.noOverwrite;
20 await Promise.all(filenames.map(async (filename) => {
21 const basename = path.basename(filename);
22 const srcFilename = path.resolve(opt.baseDir, filename);
23 const destFilename = path.resolve(opt.outputDir, opt.flat ? basename : filename);
24 if (!opt.dry) {
25 if (opt.move) {
26 await moveFile(srcFilename, destFilename, { overwrite });
27 }
28 else {
29 await cpFile(srcFilename, destFilename, { overwrite });
30 }
31 }
32 if (opt.verbose) {
33 console.log((0, colors_1.grey)(` ${filename}`));
34 }
35 }));
36 kpyLogResult(opt, filenames, started);
37}
38exports.kpy = kpy;
39function kpySync(opt) {
40 const started = Date.now();
41 kpyPrepare(opt);
42 const filenames = index_1.globby.sync(opt.inputPatterns, {
43 cwd: opt.baseDir,
44 dot: opt.dotfiles,
45 });
46 kpyLogFilenames(opt, filenames);
47 const overwrite = !opt.noOverwrite;
48 filenames.forEach(filename => {
49 const basename = path.basename(filename);
50 const srcFilename = path.resolve(opt.baseDir, filename);
51 const destFilename = path.resolve(opt.outputDir, opt.flat ? basename : filename);
52 if (!opt.dry) {
53 if (opt.move) {
54 moveFile.sync(srcFilename, destFilename, { overwrite });
55 }
56 else {
57 cpFile.sync(srcFilename, destFilename, { overwrite });
58 }
59 }
60 if (opt.verbose) {
61 console.log((0, colors_1.grey)(` ${filename}`));
62 }
63 });
64 kpyLogResult(opt, filenames, started);
65}
66exports.kpySync = kpySync;
67function kpyPrepare(opt) {
68 // Default pattern
69 if (!opt.inputPatterns?.length)
70 opt.inputPatterns = ['**'];
71 // default to cwd
72 opt.baseDir || (opt.baseDir = '.');
73 opt.outputDir || (opt.outputDir = '.');
74 if (!fs.existsSync(opt.baseDir)) {
75 console.log(`kpy: baseDir doesn't exist: ${(0, colors_1.boldWhite)(opt.baseDir)}`);
76 return;
77 }
78 fs.ensureDirSync(opt.outputDir);
79}
80function kpyLogFilenames(opt, filenames) {
81 if (opt.silent)
82 return;
83 // console.log({filenames})
84 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(' '))})`);
85}
86function kpyLogResult(opt, filenames, started) {
87 if (opt.silent || filenames.length === 0)
88 return;
89 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))}`);
90}