UNPKG

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