UNPKG

@applicaster/zapplicaster-cli

Version:

CLI Tool for the zapp app and Quick Brick project

108 lines (87 loc) 2.7 kB
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 };