UNPKG

hdw2

Version:

鸿蒙前端hdc调试工具

71 lines (68 loc) 2.57 kB
/* * @Author: tankunpeng * @Date: 2024-06-26 19:47:35 * @LastEditTime: 2025-08-06 16:11:18 * @LastEditors: tankunpeng * @Description: 执行hdc命令 * Come on, worker! */ const shell = require('shelljs'); const chalk = require('chalk'); const { getHdc, printTitle, shellLog, shellError } = require('./util'); function hdc(options = {}, command = {}, logOps = {}) { const hdc = getHdc(); const args = command.args || []; const hdcShell = args[0]; if (hdcShell === 'shell') { shellLog(`${chalk.red('hdc shell不支持TTY模式,请使用hdw shell执行hdc shell命令')}`, logOps, { hideLog: false, }); // shellLog(`${chalk.cyan('hdc命令路径: ')}${chalk.green(hdc)}`, logOps, { hideLog: false }); shell.exit(1); } const hasOptions = Object.keys(options).length > 0; if (options.V) { args.push('-v'); } else if (options.H || (!hdcShell && !hasOptions)) { args.push('-h'); } printTitle('=====>执行hdc命令<=====', logOps, { beforeLine: true, afterLine: true }); const hdcCmd = `${hdc} ${args.join(' ')}`; const hdcCmdExec = shell.exec(hdcCmd, { silent: true, async: true }); let hdcStdout = ''; hdcCmdExec.stdout.once('data', () => { shellLog(`${chalk.cyan('hdc命令输出:')}`, logOps, { afterLine: true }); }); hdcCmdExec.stdout.on('data', (data) => { hdcStdout += data; shellLog(`${data}`, logOps); }); let hdcStderr = ''; hdcCmdExec.stderr.on('data', (data) => { hdcStderr += data; if (args.includes('-h')) { shellLog(`${data}`, logOps); } else { shellError(`${data}`, logOps, { hideLog: false }); } }); hdcCmdExec.on('error', () => { shellLog(`${chalk.cyan('hdc命令执行结果: ')}${chalk.red('失败')}`, logOps, { hideLog: false }); shellLog( `${chalk.cyan('处理建议: ')}${chalk.yellow( 'hdc命令执行失败,请手动执行命令尝试\n命令:' + chalk.green(hdcCmd) )}`, logOps, { hideLog: false } ); shell.exit(1); }); hdcCmdExec.on('close', () => { shellLog(`${chalk.cyan('hdc命令执行结果: ')}${chalk.green('成功')}`, logOps); if (hdcShell === 'install') { const isSuccess = hdcStdout.includes('successfully'); shellLog(`${chalk.cyan('HAP安装结果: ')}${isSuccess ? chalk.green('成功') : chalk.red('失败')}`, logOps); } }); } exports.hdc = hdc;