UNPKG

wooooosik6

Version:

Instant live reload tool for Tizen Web Application development

109 lines (99 loc) 3.64 kB
const inquirer = require('inquirer'); const { execSync } = require('child_process'); const util = require('./util.js'); const regExp = require('./regexp.js'); const EMULATOR_IP = '0.0.0.0'; const TV_CONNECT_PORT = '26101'; module.exports = { getConnectedDeviceInfo: async deviceIpAddress => { module.exports.connectDevice(deviceIpAddress); let deviceName = await module.exports.getDeviceName(); return { deviceName: deviceName, appInstallPath: module.exports.getAppInstallPath(deviceName) }; }, connectDevice: deviceIpAddress => { if ( util.isIpAddress(deviceIpAddress) && deviceIpAddress !== EMULATOR_IP ) { console.log(`connect to....${deviceIpAddress}`); const CONNECT_TV_COMMAND = `${util.TOOLS_SDB_PATH} connect ${deviceIpAddress}:${TV_CONNECT_PORT}`; const connectResult = execSync(CONNECT_TV_COMMAND).toString(); if (connectResult.includes('connected')) { console.log(`Success to connect ${deviceIpAddress}`); } else { console.error(`Failed to connect ${deviceIpAddress}`); util.close(); } } }, getDeviceName: async () => { const SINGLE_DEVICE = 1; const NONE_DEVICE = 0; const deviceNameList = getConnectedDeviceList(); if (deviceNameList.length === NONE_DEVICE) { console.log(`No connected devices.`); util.close(); } else if (deviceNameList.length === SINGLE_DEVICE) { const deviceName = deviceNameList[0]; return deviceName; } else { const deviceIndex = deviceNameList.indexOf( deviceIpAddress + ':' + TV_CONNECT_PORT ); const ask = [ { type: 'list', name: 'deviceName', message: 'Select the device to launch Wits :', choices: deviceNameList, default: deviceIndex >= 0 ? deviceIndex : 0 } ]; const answer = await inquirer.prompt(ask); const deviceName = answer.deviceName; return deviceName; } }, getAppInstallPath: deviceName => { let appInstallPath = ''; const capability = execSync( `${util.TOOLS_SDB_PATH} -s ${deviceName} capability`, { silent: true } ) .toString() .split('\n'); capability.forEach(value => { if (value.indexOf('sdk_toolpath') !== -1) { appInstallPath = value.replace(regExp.FIND_CR, '').split(':')[1] + '/'; } }); return appInstallPath; } }; function getConnectedDeviceList() { const devices = execSync(`${util.TOOLS_SDB_PATH} devices`, { silent: true }).toString(); let devicesInfo = []; let deviceNameList = []; if (!devices.includes('offline')) { devicesInfo = devices.trim().split('\n'); devicesInfo.shift(); deviceNameList = parsingDeviceName(devicesInfo); } else { console.error(`Failed to connect ${deviceIpAddress}`); util.close(); } return deviceNameList; } function parsingDeviceName(devices) { const deviceNameList = []; devices.forEach(device => { deviceNameList.push(device.split('\t')[0].trim()); }); return deviceNameList; }