1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.kpySync = exports.kpy = void 0;
|
4 | const path = require("path");
|
5 | const js_lib_1 = require("@naturalcycles/js-lib");
|
6 | const cpFile = require("cp-file");
|
7 | const fs = require("fs-extra");
|
8 | const moveFile = require("move-file");
|
9 | const colors_1 = require("../colors");
|
10 | const index_1 = require("../index");
|
11 | async 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 | }
|
38 | exports.kpy = kpy;
|
39 | function 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 | }
|
66 | exports.kpySync = kpySync;
|
67 | function kpyPrepare(opt) {
|
68 |
|
69 | if (!opt.inputPatterns?.length)
|
70 | opt.inputPatterns = ['**'];
|
71 |
|
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 | }
|
80 | function kpyLogFilenames(opt, filenames) {
|
81 | if (opt.silent)
|
82 | return;
|
83 |
|
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 | }
|
86 | function 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 | }
|