File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/native-run/dist/android/utils/avd.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getInstalledAVDs = exports.getAVDFromINI = exports.getSDKVersionFromTarget = exports.getAVDFromConfigINI = exports.getAVDINIs = exports.isAVDConfigINI = exports.isAVDINI = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const Debug = require("debug");
const pathlib = require("path");
const ini_1 = require("../../utils/ini");
const modulePrefix = 'native-run:android:utils:avd';
const isAVDINI = (o) => o &&
typeof o['avd.ini.encoding'] === 'string' &&
typeof o['path'] === 'string' &&
typeof o['path.rel'] === 'string' &&
typeof o['target'] === 'string';
exports.isAVDINI = isAVDINI;
const isAVDConfigINI = (o) => o &&
(typeof o['avd.ini.displayname'] === 'undefined' || typeof o['avd.ini.displayname'] === 'string') &&
(typeof o['hw.lcd.density'] === 'undefined' || typeof o['hw.lcd.density'] === 'string') &&
(typeof o['hw.lcd.height'] === 'undefined' || typeof o['hw.lcd.height'] === 'string') &&
(typeof o['hw.lcd.width'] === 'undefined' || typeof o['hw.lcd.width'] === 'string') &&
(typeof o['image.sysdir.1'] === 'undefined' || typeof o['image.sysdir.1'] === 'string');
exports.isAVDConfigINI = isAVDConfigINI;
async function getAVDINIs(sdk) {
const debug = Debug(`${modulePrefix}:${getAVDINIs.name}`);
const contents = await (0, utils_fs_1.readdir)(sdk.avdHome);
const iniFilePaths = contents
.filter((f) => pathlib.extname(f) === '.ini')
.map((f) => pathlib.resolve(sdk.avdHome, f));
debug('Discovered AVD ini files: %O', iniFilePaths);
const iniFiles = await Promise.all(iniFilePaths.map(async (f) => [f, await (0, ini_1.readINI)(f, exports.isAVDINI)]));
const avdInis = iniFiles.filter((c) => typeof c[1] !== 'undefined');
return avdInis;
}
exports.getAVDINIs = getAVDINIs;
function getAVDFromConfigINI(inipath, ini, configini) {
const inibasename = pathlib.basename(inipath);
const id = inibasename.substring(0, inibasename.length - pathlib.extname(inibasename).length);
const name = configini['avd.ini.displayname'] ? String(configini['avd.ini.displayname']) : id.replace(/_/g, ' ');
const screenDPI = configini['hw.lcd.density'] ? Number(configini['hw.lcd.density']) : null;
const screenWidth = configini['hw.lcd.width'] ? Number(configini['hw.lcd.width']) : null;
const screenHeight = configini['hw.lcd.height'] ? Number(configini['hw.lcd.height']) : null;
return {
id,
path: ini.path,
name,
sdkVersion: getSDKVersionFromTarget(ini.target),
screenDPI,
screenWidth,
screenHeight,
};
}
exports.getAVDFromConfigINI = getAVDFromConfigINI;
function getSDKVersionFromTarget(target) {
return target.replace(/^android-(\d+)/, '$1');
}
exports.getSDKVersionFromTarget = getSDKVersionFromTarget;
async function getAVDFromINI(inipath, ini) {
const configini = await (0, ini_1.readINI)(pathlib.resolve(ini.path, 'config.ini'), exports.isAVDConfigINI);
if (configini) {
return getAVDFromConfigINI(inipath, ini, configini);
}
}
exports.getAVDFromINI = getAVDFromINI;
async function getInstalledAVDs(sdk) {
const avdInis = await getAVDINIs(sdk);
const possibleAvds = await Promise.all(avdInis.map(([inipath, ini]) => getAVDFromINI(inipath, ini)));
const avds = possibleAvds.filter((avd) => typeof avd !== 'undefined');
return avds;
}
exports.getInstalledAVDs = getInstalledAVDs;