saveAssets.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function _mkdirp() {
  7. const data = _interopRequireDefault(require("mkdirp"));
  8. _mkdirp = function () {
  9. return data;
  10. };
  11. return data;
  12. }
  13. function _path() {
  14. const data = _interopRequireDefault(require("path"));
  15. _path = function () {
  16. return data;
  17. };
  18. return data;
  19. }
  20. function _fs() {
  21. const data = _interopRequireDefault(require("fs"));
  22. _fs = function () {
  23. return data;
  24. };
  25. return data;
  26. }
  27. var _filterPlatformAssetScales = _interopRequireDefault(require("./filterPlatformAssetScales"));
  28. var _getAssetDestPathAndroid = _interopRequireDefault(require("./getAssetDestPathAndroid"));
  29. var _getAssetDestPathIOS = _interopRequireDefault(require("./getAssetDestPathIOS"));
  30. function _cliTools() {
  31. const data = require("@react-native-community/cli-tools");
  32. _cliTools = function () {
  33. return data;
  34. };
  35. return data;
  36. }
  37. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  38. /**
  39. * Copyright (c) Facebook, Inc. and its affiliates.
  40. *
  41. * This source code is licensed under the MIT license found in the
  42. * LICENSE file in the root directory of this source tree.
  43. *
  44. */
  45. function saveAssets(assets, platform, assetsDest) {
  46. if (!assetsDest) {
  47. _cliTools().logger.warn('Assets destination folder is not set, skipping...');
  48. return Promise.resolve();
  49. }
  50. const getAssetDestPath = platform === 'android' ? _getAssetDestPathAndroid.default : _getAssetDestPathIOS.default;
  51. const filesToCopy = Object.create(null); // Map src -> dest
  52. assets.forEach(asset => {
  53. const validScales = new Set((0, _filterPlatformAssetScales.default)(platform, asset.scales));
  54. asset.scales.forEach((scale, idx) => {
  55. if (!validScales.has(scale)) {
  56. return;
  57. }
  58. const src = asset.files[idx];
  59. const dest = _path().default.join(assetsDest, getAssetDestPath(asset, scale));
  60. filesToCopy[src] = dest;
  61. });
  62. });
  63. return copyAll(filesToCopy);
  64. }
  65. function copyAll(filesToCopy) {
  66. const queue = Object.keys(filesToCopy);
  67. if (queue.length === 0) {
  68. return Promise.resolve();
  69. }
  70. _cliTools().logger.info(`Copying ${queue.length} asset files`);
  71. return new Promise((resolve, reject) => {
  72. const copyNext = error => {
  73. if (error) {
  74. reject(error);
  75. return;
  76. }
  77. if (queue.length === 0) {
  78. _cliTools().logger.info('Done copying assets');
  79. resolve();
  80. } else {
  81. // queue.length === 0 is checked in previous branch, so this is string
  82. const src = queue.shift();
  83. const dest = filesToCopy[src];
  84. copy(src, dest, copyNext);
  85. }
  86. };
  87. copyNext();
  88. });
  89. }
  90. function copy(src, dest, callback) {
  91. const destDir = _path().default.dirname(dest);
  92. (0, _mkdirp().default)(destDir, err => {
  93. if (err) {
  94. callback(err);
  95. return;
  96. }
  97. _fs().default.createReadStream(src).pipe(_fs().default.createWriteStream(dest)).on('finish', callback);
  98. });
  99. }
  100. var _default = saveAssets;
  101. exports.default = _default;
  102. //# sourceMappingURL=saveAssets.js.map