balena-cli
Version:
The official balena Command Line Interface
118 lines • 3.53 kB
JavaScript
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
;