builder/lib/processors/resourceCopier.js

  1. /**
  2. * Copy files to a different path.
  3. *
  4. * @public
  5. * @alias module:@ui5/builder.processors.resourceCopier
  6. * @param {object} parameters Parameters
  7. * @param {module:@ui5/fs.Resource[]} parameters.resources List of resources to be processed
  8. * @param {object} parameters.options Options
  9. * @param {string} parameters.options.pattern Search pattern for path
  10. * @param {string} parameters.options.replacement Replacement string for path
  11. * @returns {Promise<module:@ui5/fs.Resource[]>} Promise resolving with the cloned resources
  12. */
  13. module.exports = function({resources, options: {pattern, replacement}}) {
  14. if (!pattern || typeof replacement !== "string") {
  15. return Promise.reject(new Error("[resourceCopier] Invalid options: Missing pattern or replacement."));
  16. }
  17. return Promise.all(resources.map((resource) => {
  18. return resource.clone().then((newResource) => {
  19. newResource.setPath(newResource.getPath().replace(pattern, replacement));
  20. return newResource;
  21. });
  22. }));
  23. };