UNPKG

1.38 kBJavaScriptView Raw
1var $, 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
15gulp = require('gulp');
16
17gulpIf = require('gulp-if');
18
19using = require('gulp-using');
20
21module.exports = async function(...arg) {
22 var msg, option, source, target;
23 // source, target, [option]
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 // require
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};