1 | var $, gulp, gulpIf, using;
|
2 |
|
3 | $ = {};
|
4 |
|
5 | $.normalizePathToArray = require('../dist/normalizePathToArray');
|
6 |
|
7 | $.normalizePath = require('../dist/normalizePath');
|
8 |
|
9 | $.wrapList = require('../dist/wrapList');
|
10 |
|
11 | $.parseString = require('../dist/parseString');
|
12 |
|
13 | $.info = require('../dist/info');
|
14 |
|
15 | gulp = require('gulp');
|
16 |
|
17 | gulpIf = require('gulp-if');
|
18 |
|
19 | using = require('gulp-using');
|
20 |
|
21 | module.exports = async function(...arg) {
|
22 | var msg, option, source, target;
|
23 |
|
24 | [source, target, option] = (function() {
|
25 | switch (arg.length) {
|
26 | case 2:
|
27 | return [arg[0], arg[1], null];
|
28 | case 3:
|
29 | return arg;
|
30 | default:
|
31 | throw new Error('copy_/error: invalid argument length');
|
32 | }
|
33 | })();
|
34 | source = $.normalizePathToArray(source);
|
35 | target = $.normalizePath(target);
|
36 | if (!source.length) {
|
37 | return this;
|
38 | }
|
39 | await new Promise(function(resolve) {
|
40 | var rename;
|
41 |
|
42 | rename = require('gulp-rename');
|
43 | return gulp.src(source, {
|
44 | allowEmpty: true
|
45 | }).pipe(using()).pipe(gulpIf(!!option, rename(option))).pipe(gulp.dest(function(e) {
|
46 | return target || e.base;
|
47 | })).on('end', function() {
|
48 | return resolve();
|
49 | });
|
50 | });
|
51 | msg = `copied ${$.wrapList(source)} to ${$.wrapList(target)}`;
|
52 | if (option) {
|
53 | msg += `, as '${$.parseString(option)}'`;
|
54 | }
|
55 | $.info('copy', msg);
|
56 | return this;
|
57 | };
|