UNPKG

balena-cli

Version:

The official balena Command Line Interface

118 lines 3.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CliSettings = void 0; exports.parseBoolEnvVar = parseBoolEnvVar; exports.normalizeEnvVar = normalizeEnvVar; exports.normalizeEnvVars = normalizeEnvVars; exports.setOfflineModeEnvVars = setOfflineModeEnvVars; exports.pkgExec = pkgExec; exports.getCachedUsername = getCachedUsername; class CliSettings { constructor() { this.settings = require('balena-settings-client'); } get(name) { return this.settings.get(name); } getCatch(name) { try { return this.settings.get(name); } catch (err) { if (!/Setting not found/i.test(err.message)) { throw err; } } } } exports.CliSettings = CliSettings; function parseBoolEnvVar(varName) { var _a; return !['0', 'no', 'false', '', undefined].includes((_a = process.env[varName]) === null || _a === void 0 ? void 0 : _a.toLowerCase()); } function normalizeEnvVar(varName) { process.env[varName] = parseBoolEnvVar(varName) ? '1' : ''; } const bootstrapVars = [ 'BALENARC_NO_SENTRY', 'BALENARC_NO_ANALYTICS', 'BALENARC_OFFLINE_MODE', 'BALENARC_UNSUPPORTED', 'DEBUG', ]; function normalizeEnvVars(varNames = bootstrapVars) { for (const varName of varNames) { normalizeEnvVar(varName); } } function setOfflineModeEnvVars() { if (process.env.BALENARC_OFFLINE_MODE) { process.env.BALENARC_UNSUPPORTED = '1'; process.env.BALENARC_NO_SENTRY = '1'; process.env.BALENARC_NO_ANALYTICS = '1'; } } async function pkgExec(modFunc, args) { const [modPath, funcName] = modFunc.split('::'); let replacedModPath = modPath; const match = modPath .replace(/\\/g, '/') .match(/\/snapshot\/balena-cli\/(.+)/); if (match) { replacedModPath = `../${match[1]}`; } process.argv = [process.argv[0], process.argv[1], ...args]; try { const mod = await Promise.resolve(`${replacedModPath}`).then(s => require(s)); if (funcName) { await mod[funcName](...args); } } catch (err) { console.error(`Error executing pkgExec "${modFunc}" [${args.join()}]`); console.error(err); } } let cachedUsername; async function getCachedUsername() { if (cachedUsername) { return cachedUsername; } const [{ getBalenaSdk }, { getStorage }, settings] = await Promise.all([ Promise.resolve().then(() => require('./lazy')), Promise.resolve().then(() => require('balena-settings-storage')), Promise.resolve().then(() => require('balena-settings-client')), ]); const dataDirectory = settings.get('dataDirectory'); const storage = getStorage({ dataDirectory }); let token; try { token = (await storage.get('token')); } catch (_a) { } if (!token) { return; } try { const result = (await storage.get('cachedUsername')); if (result && result.token === token && result.username) { cachedUsername = result; return cachedUsername; } } catch (_b) { } try { const { username } = await getBalenaSdk().auth.getUserInfo(); if (username) { cachedUsername = { token, username }; await storage.set('cachedUsername', cachedUsername); } } catch (_c) { } return cachedUsername; } //# sourceMappingURL=bootstrap.js.map