140 lines
4.0 KiB
JavaScript
140 lines
4.0 KiB
JavaScript
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();
|