UNPKG

@webosose/ares-cli

Version:

Command Line Interface for development webOS application and service

138 lines (121 loc) 3.7 kB
/* * Copyright (c) 2020-2023 LG Electronics Inc. * * SPDX-License-Identifier: Apache-2.0 */ const path = require('path'), fs = require('fs'), nopt = require('nopt'), exec = require('child_process').exec, shelljs = require('shelljs'); const commonSpec = {}; const options = { profile: "ose", device : "emulator", ip : "127.0.0.1", port : 6622, pkgId : "com.jasmine.web.app", pkgService : "com.jasmine.web.app.service", ipkFile : "com.jasmine.web.app_0.0.1_all.ipk", ipkPath : path.join(__dirname, "..", "tempFiles", "com.jasmine.web.app_0.0.1_all.ipk") }; if (typeof module !== 'undefined' && module.exports) { module.exports = commonSpec; } const knownOpts = { "device": String, "ip": String, "port": String, "timeInterval": Number }; const shortHands = { "d": ["--device"], "ip": ["--ip"], "port": ["--port"], "ti": ["--timeInterval"] }; commonSpec.getOptions = function() { return new Promise(function(resolve, reject){ const argv = nopt(knownOpts, shortHands, process.argv, 2); if (argv.device) { options.device = argv.device; } if (argv.ip) { options.ip = argv.ip; } if (options.device !== "emulator") { options.port = argv.port ? argv.port : 22; } if (argv.timeInterval) { jasmine.DEFAULT_TIMEOUT_INTERVAL = argv.timeInterval; } console.info(`device : ${options.device}, ip : ${options.ip}, port : ${options.port}, timeInterval : ${jasmine.DEFAULT_TIMEOUT_INTERVAL}`); // set profile const cmd = commonSpec.makeCmd('ares-config'); exec(cmd, function (error, stdout) { if (error) { console.error("set config error " + error); reject(stdout); } resolve(options); }); }); }; commonSpec.getExpectedResult = function(aresCmd) { return new Promise(function(resolve){ try { const text = fs.readFileSync(path.join(__dirname, "../test_data", aresCmd + '.json'), 'utf8'); const resultJson = JSON.parse(text); resolve(resultJson[options.profile]); } catch(err) { console.error(err); process.exit(1); } }); }; commonSpec.resetDeviceList = function() { return new Promise(function(resolve, reject) { const cmd = commonSpec.makeCmd('ares-setup-device'); exec(cmd + ' -R', function (error, stdout, stderr) { if (!stderr) { resolve(true); } else { reject(error); } }); }); }; commonSpec.addDeviceInfo = function() { return new Promise(function(resolve, reject) { const cmd = commonSpec.makeCmd('ares-setup-device'); exec(cmd + ` -a ${options.device} -i port=${options.port} -i username=root -i host=${options.ip} -i default=true`, function (error, stdout, stderr) { if (stderr) { reject(stderr); } else { resolve(stdout); } }); }); }; commonSpec.makeCmd = function(cmd) { return `node ${path.join('bin', cmd + '.js')}`; }; commonSpec.createOutDir = function(filePath, mode) { if (!fs.existsSync(filePath)) { shelljs.mkdir(filePath); } if (mode) { fs.chmodSync(filePath, mode); } }; commonSpec.removeOutDir = function(filePath) { if (fs.existsSync(filePath)) { shelljs.rm('-rf', filePath); } }; commonSpec.detectNodeMessage = function(stderr) { if (stderr.includes("node:")) { return fail(stderr); } };