novu
Version:
Novu CLI. Run Novu Studio and sync workflows with Novu Cloud
33 lines (32 loc) • 1.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.copy = void 0;
const fast_glob_1 = require("fast-glob");
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const identity = (x) => x;
const copy = async (src, dest, { cwd, rename = identity, parents = true } = {}) => {
const source = typeof src === 'string' ? [src] : src;
if (source.length === 0 || !dest) {
throw new TypeError('`src` and `dest` are required');
}
const sourceFiles = await (0, fast_glob_1.async)(source, {
cwd,
dot: true,
absolute: false,
stats: false,
});
const destRelativeToCwd = cwd ? path_1.default.resolve(cwd, dest) : dest;
return Promise.all(sourceFiles.map(async (p) => {
const dirname = path_1.default.dirname(p);
const basename = rename(path_1.default.basename(p));
const from = cwd ? path_1.default.resolve(cwd, p) : p;
const to = parents ? path_1.default.join(destRelativeToCwd, dirname, basename) : path_1.default.join(destRelativeToCwd, basename);
await fs_1.default.promises.mkdir(path_1.default.dirname(to), { recursive: true });
return fs_1.default.promises.copyFile(from, to);
}));
};
exports.copy = copy;