hdw2
Version:
鸿蒙前端hdc调试工具
71 lines (68 loc) • 2.57 kB
JavaScript
/*
* @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;