Skip to content

Commit

Permalink
feat: update from webos emulator to simulator
Browse files Browse the repository at this point in the history
  • Loading branch information
Marius456 committed Jan 14, 2024
1 parent 62dc928 commit d8b7994
Showing 1 changed file with 40 additions and 27 deletions.
67 changes: 40 additions & 27 deletions packages/sdk-webos/src/deviceManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import {
isSystemWin,
isUrlLocalhost,
RnvContext,
waitForExecCLI,
inquirerPrompt,
ExecOptionsPresets,
} from '@rnv/core';
Expand All @@ -38,30 +37,23 @@ export const launchWebOSimulator = (c: RnvContext) => {
return Promise.reject(`c.buildConfig.sdks.WEBOS_SDK undefined`);
}

const availableEmulatorVersions = getDirectories(path.join(webosSdkPath, 'Emulator'));
const availableEmulatorVersions = getDirectories(path.join(webosSdkPath, 'Simulator'));

const ePath = path.join(
webosSdkPath,
`Emulator/${availableEmulatorVersions?.[0] || 'v4.0.0'}/LG_webOS_TV_Emulator${
isSystemWin ? '.exe' : '_RCU.app'
}`
`Simulator/${availableEmulatorVersions?.[0]}/${availableEmulatorVersions?.[0]}${isSystemWin ? '.exe' : '.app'}`
);

if (!fsExistsSync(ePath)) {
return Promise.reject(`Can't find emulator at path: ${ePath}`);
return Promise.reject(`Can't find simulator at path: ${ePath}`);
}
if (isSystemWin) {
return executeAsync(c, ePath, { detached: true, stdio: 'ignore' });
}

return executeAsync(c, `${openCommand} ${ePath}`, { detached: true });
};

// const startHostedServerIfRequired = (c) => {
// if (Context.isWebHostEnabled) {
// return rnvStart(c);
// }
// };

const parseDevices = (c: RnvContext, devicesResponse: string): Promise<Array<WebosDevice>> => {
const linesArray = devicesResponse
.split('\n')
Expand Down Expand Up @@ -100,6 +92,41 @@ const parseDevices = (c: RnvContext, devicesResponse: string): Promise<Array<Web
);
};

// Used for simulator
const launchAppOnSimulator = async (c: RnvContext, appPath: string) => {
logTask('launchAppOnSimulator');

const webosSdkPath = getRealPath(c, c.buildConfig?.sdks?.WEBOS_SDK);

if (!webosSdkPath) {
return Promise.reject(`c.buildConfig.sdks.WEBOS_SDK undefined`);
}

const availableEmulatorVersions = getDirectories(path.join(webosSdkPath, 'Simulator'));
console.log(!availableEmulatorVersions.length);
if (!availableEmulatorVersions.length) {
return Promise.reject(`Can't find simulator at path: ${path.join(webosSdkPath, 'Simulator')}`);
}

let selectedOption;
if (availableEmulatorVersions.length > 1) {
({ selectedOption } = await inquirerPrompt({
name: 'selectedOption',
type: 'list',
choices: availableEmulatorVersions,
warningMessage: `Found several installed simulators. Choose which one to use:`,
}));
} else {
selectedOption = availableEmulatorVersions[0];
logInfo(`Found simulator ${selectedOption} at path: ${path.join(webosSdkPath, 'Simulator')}`);
}
const regex = /[+-]?\d+(\.\d+)?/g;
const version = selectedOption.match(regex)[0];

await execCLI(c, CLI_WEBOS_ARES_LAUNCH, `-s ${version} ${appPath}`);
};

// Used for actual devices
const installAndLaunchApp = async (c: RnvContext, target: string, appPath: string, tId: string) => {
try {
await execCLI(c, CLI_WEBOS_ARES_INSTALL, `--device ${target} ${appPath}`);
Expand Down Expand Up @@ -138,17 +165,6 @@ export const listWebOSTargets = async (c: RnvContext) => {
return true;
};

const waitForEmulatorToBeReady = async (c: RnvContext) => {
const devicesResponse = await execCLI(c, CLI_WEBOS_ARES_DEVICE_INFO, '-D');
const devices = await parseDevices(c, devicesResponse);
const emulator = devices.filter((d) => !d.isDevice)[0];
if (!emulator) throw new Error('No WebOS emulator configured');

return waitForExecCLI(c, CLI_WEBOS_ARES_DEVICE_INFO, `-d ${emulator.name}`, (res) =>
typeof res === 'string' ? res.includes('modelName') : res
);
};

export const runWebosSimOrDevice = async (c: RnvContext) => {
const { device } = c.program;

Expand All @@ -162,7 +178,6 @@ export const runWebosSimOrDevice = async (c: RnvContext) => {
return Promise.reject(`Cannot determine getPlatformProjectDir value`);
}
const tOut = path.join(platDir, 'output');
const tSim = c.program.target || 'emulator';
const configFilePath = path.join(tDir, 'appinfo.json');

// logTask(`runWebOS:${target}:${isHosted}`, chalk().grey);
Expand Down Expand Up @@ -238,9 +253,7 @@ export const runWebosSimOrDevice = async (c: RnvContext) => {
return installAndLaunchApp(c, response.chosenDevice, appPath, tId);
}
} else {
await launchWebOSimulator(c);
await waitForEmulatorToBeReady(c);
return installAndLaunchApp(c, tSim, appPath, tId);
return launchAppOnSimulator(c, platDir);
}
} else {
// Target specified, using that
Expand Down

0 comments on commit d8b7994

Please sign in to comment.