@applicaster/zapplicaster-cli
Version:
CLI Tool for the zapp app and Quick Brick project
56 lines (43 loc) • 1.57 kB
JavaScript
const R = require("ramda");
const {
saveRemoteJsonToFile,
saveFontFiles,
saveAssets,
} = require("../../download");
const { renderConfigFile } = require("../../render");
/**
* @typedef configuration
* @type {Object}
* @property {String} appVersionId: ID of the app version in Zapp
* @property {Object} buildParams: zapp build params for the app
* @property {String} platform: Platform of the app
* @property {Boolean} openSdk: whether or not the app should use an open SDK
* @property {Boolean} verbose: verbose output flag
*/
/**
* Retrieves configuration files from S3 and copy them locally
* to the matching (config|assets|fonts)/${platform} folder
* @param {configuration} configuration
*/
async function configFilesRetriever(configuration) {
const { buildParams, template, runtimeConfigurationUrls } = configuration;
const { configFiles = [] } = template;
if (Array.isArray(configFiles) && !R.propEq("length", 0, configFiles)) {
await Promise.all(R.map(renderConfigFile(configuration), configFiles));
}
const configFilesUrls = Object.entries(runtimeConfigurationUrls).map(
([key, value]) => {
const newKey = key.replace("_url", ".json");
return [newKey, value];
}
);
// download files & save json files
await Promise.all(
R.map(saveRemoteJsonToFile(configuration), configFilesUrls)
);
const { fonts_url, fonts, assets_url } = buildParams;
saveFontFiles(configuration, fonts_url, fonts);
saveAssets(configuration, assets_url);
return true;
}
module.exports = { configFilesRetriever };