@applicaster/zapplicaster-cli
Version:
CLI Tool for the zapp app and Quick Brick project
108 lines (87 loc) • 2.7 kB
JavaScript
const R = require("ramda");
const axios = require("axios");
const { getAppVersionParams } = require("../../zapp");
const { resolveAppTemplate } = require("../../templates");
const { isZappReactNativeRepo } = require("../../settings");
const store_map = {
amazon: "amazon",
google_play: "android",
apple_store: "ios",
samsung_app_store: "samsung_tv",
lg_content_store: "lg_tv",
vizio_app_store: "vizio",
};
/**
* Takes an plugin_configuration url and if a platform is samsung_tv or lg_tv retrieves BaseTheme
* @param {Strng} url : plugin_configuration.json url
* @param {Strng} platform
* @returns {Promise} spinnerColor
*/
async function retrievesSpinnerColor(url, platform) {
try {
if (!R.contains(platform, ["samsung_tv", "lg_tv", "vizio"])) {
return;
}
const { data } = await axios.get(url);
const themePlugin = data.find(
(currentPlugin) => currentPlugin.plugin.identifier === "default_theme"
);
const themePluginConfig = themePlugin.configuration_json;
const spinnerColor = themePluginConfig.loading_spinner_color || "#FFF";
return spinnerColor;
} catch (error) {
console.log("Error in retrievesWebBaseTheme", error);
return "#FFF";
}
}
function resolvePlatform(stylesUrl) {
const urlParts = stylesUrl.split("/");
const store = urlParts[urlParts.length - 4];
return store_map[store];
}
/**
* Creates the configuration object for the task
* @param {any} args : app Version ID argument passed to the cli
* @param {any} options : contains the options passed to the cli call
* @returns {configuration}
*/
async function configurator({ cliArgs, cliOptions }) {
const appVersionId = R.head(cliArgs) || cliOptions.appVersionId;
const {
openSdk = false,
verbose = false,
destinationPath = null,
zappReactNative = isZappReactNativeRepo(),
yarn,
template,
newWorkspace,
buildMobile,
} = cliOptions;
const buildParams = await getAppVersionParams(appVersionId);
delete buildParams.styles_url; // deprecated
const platform = resolvePlatform(buildParams.assets_url);
const { device_target: deviceTarget } = buildParams;
const spinnerColor = await retrievesSpinnerColor(
buildParams.plugin_configurations_url,
platform
);
const _destinationPath = zappReactNative
? "development-app"
: destinationPath;
return {
appVersionId,
buildParams,
platform,
deviceTarget,
openSdk,
verbose,
destinationPath: _destinationPath,
zappReactNative,
yarn,
template: resolveAppTemplate(template, platform, deviceTarget),
newWorkspace,
buildMobile,
spinnerColor,
};
}
module.exports = { configurator };