nativescript
Version:
Command-line interface for building NativeScript projects
57 lines • 2.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AndroidEmulatorDiscovery = void 0;
const events_1 = require("events");
const constants_1 = require("../../constants");
const _ = require("lodash");
const yok_1 = require("../../yok");
class AndroidEmulatorDiscovery extends events_1.EventEmitter {
constructor($androidEmulatorServices, $mobileHelper) {
super();
this.$androidEmulatorServices = $androidEmulatorServices;
this.$mobileHelper = $mobileHelper;
this._emulators = {};
}
async startLookingForDevices(options) {
if (options &&
options.platform &&
!this.$mobileHelper.isAndroidPlatform(options.platform)) {
return;
}
const availableEmulatorsOutput = await this.$androidEmulatorServices.getEmulatorImages();
const currentEmulators = availableEmulatorsOutput.devices;
const cachedEmulators = _.values(this._emulators);
// Remove old emulators
const lostEmulators = _(cachedEmulators)
.reject((e) => _.some(currentEmulators, (emulator) => emulator && e && emulator.imageIdentifier === e.imageIdentifier))
.value();
// Add new emulators
const foundEmulators = _(currentEmulators)
.reject((e) => _.some(cachedEmulators, (emulator) => emulator && e && emulator.imageIdentifier === e.imageIdentifier))
.value();
if (lostEmulators.length) {
this.raiseOnEmulatorImagesLost(lostEmulators);
}
if (foundEmulators.length) {
this.raiseOnEmulatorImagesFound(foundEmulators);
}
}
getDevices() {
return _.values(this._emulators);
}
raiseOnEmulatorImagesFound(emulators) {
_.forEach(emulators, (emulator) => {
this._emulators[emulator.imageIdentifier] = emulator;
this.emit(constants_1.EmulatorDiscoveryNames.EMULATOR_IMAGE_FOUND, emulator);
});
}
raiseOnEmulatorImagesLost(emulators) {
_.forEach(emulators, (emulator) => {
delete this._emulators[emulator.imageIdentifier];
this.emit(constants_1.EmulatorDiscoveryNames.EMULATOR_IMAGE_LOST, emulator);
});
}
}
exports.AndroidEmulatorDiscovery = AndroidEmulatorDiscovery;
yok_1.injector.register("androidEmulatorDiscovery", AndroidEmulatorDiscovery);
//# sourceMappingURL=android-emulator-discovery.js.map
;