copy.js

'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports['default'] = copy;

var _path = require('path');

var _optional = require('optional');

var _optional2 = _interopRequireDefault(_optional);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

var enfscopy = (0, _optional2['default'])('enfscopy');

/**
 * Copy every {@link Definition} to a destination directory.
 * @param {Dictionary} files
 * @param {string} destination
 */
function copy(files, destination) {
  if (!enfscopy) {
    throw 'You have to install `enfscopy` in order to use this function';
  }

  return files.map(function (f) {
    return doCopy(f, destination);
  }).reduce(function (promise, fn) {
    return promise.then(fn);
  }, Promise.resolve()).then(function () {
    return [].concat(_toConsumableArray(files));
  });
}

var doCopy = function doCopy(f, destination) {
  return enfscopy.copySync(f.entirePath, (0, _path.join)(f.root, destination, f.path));
};