-
Notifications
You must be signed in to change notification settings - Fork 4
/
index.js
34 lines (27 loc) · 871 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
'use strict';
const path = require('path');
const mkdirp = require('mkdirp');
const ncp = require('ncp');
function ensureDir(fromTo) {
const toPath = path.dirname(fromTo.to);
return new Promise((resolve, reject) => {
mkdirp(toPath, null, err => err ? reject(err) : resolve());
});
}
function copyFile(fromTo) {
return new Promise((resolve, reject) => {
ncp(fromTo.from, fromTo.to, { dereference: true }, err => err ? reject(err) : resolve());
});
}
function ensureDirAndCopy(root, relativeFromTo) {
const fromTo = {
from: path.join(root, relativeFromTo.from),
to: path.join(root, relativeFromTo.to)
};
return ensureDir(fromTo)
.then(() => copyFile(fromTo))
.then(() => fromTo);
}
module.exports = function (root, copyItems) {
return Promise.all(copyItems.map(relativeFromTo => ensureDirAndCopy(root, relativeFromTo)));
};