Files
svn/tech/tools/checkAudio.js
2025-08-04 10:46:00 +08:00

140 lines
4.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const fs = require('fs');
const path = require('path');
let CheckAudio = {
srcFilePath: process.argv[2],
destKeyPath: process.argv[3],
start() {
if (!path.isAbsolute(this.srcFilePath)) {
this.srcFilePath = path.join(__dirname, this.srcFilePath);
}
if (!path.isAbsolute(this.destKeyPath)) {
this.destKeyPath = path.join(__dirname, this.destKeyPath);
}
let fileStr = fs.readFileSync(this.destKeyPath);
if (fileStr) {
let obj = JSON.parse(fileStr);
if (obj) {
this.checkKeyIsExist(this.srcFilePath, obj);
this.checkFileIsExist(this.srcFilePath, obj);
}
}
},
/**
* 检查文件对应的key是否存在即文件是否多余。
* @param {*} srcFileDir
* @param {*} fileKeyObj
* @returns
*/
checkKeyIsExist(srcFileDir, fileKeyObj) {
if (!srcFileDir || !fileKeyObj) {
console.error("Checker: invalid srcFileDir=" + srcFileDir);
return;
}
let _lookupDir = (srcDir) => {
let files = fs.readdirSync(srcDir);
for (let i = 0, len = files.length; i < len; i++) {
let file = files[i];
let curPath = path.join(srcDir, file);
let stat = fs.statSync(curPath);
if (stat.isDirectory()) {
_lookupDir(curPath);
continue;
}
let bFound = false;
let pathObj = path.parse(curPath);
for (let key in fileKeyObj) {
let fileName = fileKeyObj[key];
if (fileName && pathObj.name === fileName) {
bFound = true;
break;
}
}
if (!bFound) {
console.error('\u672a\u4f7f\u7528\u7684\u6587\u4ef6\u003a\u0020' + file);
}
}
}
_lookupDir(srcFileDir);
},
/**
* 获取目录下所有文件名
* @param {*} srcFileDir
* @returns
*/
getAllFileName(srcFileDir) {
if (!srcFileDir) {
console.error("getAllFile: invalid srcFileDir=" + srcFileDir);
return null;
}
let retFiles = [];
let _lookupDir = (srcDir) => {
let files = fs.readdirSync(srcDir);
for (let i = 0, len = files.length; i < len; i++) {
let file = files[i];
let curPath = path.join(srcDir, file);
let stat = fs.statSync(curPath);
if (stat.isDirectory()) {
_lookupDir(curPath);
continue;
}
let pathObj = path.parse(curPath);
if (pathObj && pathObj.name) {
retFiles.push(pathObj.name);
}
}
}
_lookupDir(srcFileDir);
return retFiles;
},
/**
* 检查文件是否存在即key使用了但实际文件缺失
* @param {*} srcFileDir
* @param {*} fileKeyObj
* @returns
*/
checkFileIsExist(srcFileDir, fileKeyObj) {
if (!srcFileDir || !fileKeyObj) {
console.error("Checker: invalid srcFileDir=" + srcFileDir);
return;
}
let allNames = this.getAllFileName(srcFileDir);
for (let key in fileKeyObj) {
let fileName = fileKeyObj[key];
if (fileName) {
let bFound = false;
for (let i = 0, len = allNames.length; i < len; i++) {
if (fileName == allNames[i]) {
bFound = true;
break;
}
}
if (!bFound) {
console.error('\u7f3a\u5931\u7684\u6587\u4ef6\u003a\u0020' + fileName);
}
}
}
},
};
module.exports = CheckAudio;
CheckAudio.start();