UNPKG

@platformos/pos-cli

Version:
71 lines (58 loc) 2.16 kB
import Portal from '../portal.js'; import logger from '../logger.js'; import * as validate from '../validators/index.js'; import { storeEnvironment, deviceAuthorizationFlow } from '../environments.js'; import { readPassword } from '../utils/password.js'; const checkParams = (env, params) => { if (params.email) validate.email(params.email); if (params.url.slice(-1) != '/') { params.url = params.url + '/'; } validate.url(params.url); }; const saveToken = (settings, token) => { storeEnvironment(Object.assign(settings, { token: token })); logger.Success(`Environment ${settings.url} as ${settings.environment} has been added successfully.`); }; const login = async (email, password, url) => { return Portal.login(email, password, url) .then(response => { if (response) return Promise.resolve(response[0].token); }); }; const addEnv = async (environment, params) => { logger.Debug(`[addEnv] Adding environment: ${environment}`); logger.Debug(`[addEnv] URL: ${params.url}`); logger.Debug(`[addEnv] Partner Portal URL: ${params.partnerPortalUrl || 'default'}`); checkParams(environment, params); if (params.partnerPortalUrl) { process.env['PARTNER_PORTAL_HOST'] ||= params.partnerPortalUrl; } const settings = { url: params.url, environment: environment, email: params.email, partner_portal_url: process.env['PARTNER_PORTAL_HOST'] }; let token; if (params.token) { token = params.token; } else if (!params.email){ token = await deviceAuthorizationFlow(params.url); } else { logger.Info( `Please make sure that you have a permission to deploy. \n You can verify it here: ${Portal.url()}/me/permissions`, { hideTimestamp: true } ); const password = await readPassword(); logger.Info(`Asking ${Portal.url()} for access token...`); token = await login(params.email, password, params.url); } if (token) { logger.Debug('[addEnv] Token obtained, length: ' + (token?.length || 0)); saveToken(settings, token); } else { logger.Debug('[addEnv] ERROR: Token is falsy, cannot save environment'); } }; export default addEnv;