mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-17 19:08:25 -07:00
64 lines
1.5 KiB
JavaScript
64 lines
1.5 KiB
JavaScript
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
|
||
|
const SRC_DIR = '../../client/src/'
|
||
|
const LOCALES_DIR = '../../client/src/__locales';
|
||
|
const BASE_FILE = path.join(LOCALES_DIR, 'en.json');
|
||
|
|
||
|
// Strings that may be found by the algorithm,
|
||
|
// but in fact they are used.
|
||
|
const KNOWN_USED_STRINGS = {
|
||
|
'blocking_mode_refused': true,
|
||
|
'blocking_mode_nxdomain': true,
|
||
|
'blocking_mode_custom_ip': true,
|
||
|
}
|
||
|
|
||
|
function traverseDir(dir, callback) {
|
||
|
fs.readdirSync(dir).forEach(file => {
|
||
|
let fullPath = path.join(dir, file);
|
||
|
if (fs.lstatSync(fullPath).isDirectory()) {
|
||
|
traverseDir(fullPath, callback);
|
||
|
} else {
|
||
|
callback(fullPath);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
const contains = (key, files) => {
|
||
|
for (let file of files) {
|
||
|
if (file.includes(key)) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
const main = () => {
|
||
|
const baseLanguage = require(BASE_FILE);
|
||
|
const files = [];
|
||
|
|
||
|
traverseDir(SRC_DIR, (path) => {
|
||
|
const canContain = (path.endsWith('.js') || path.endsWith('.json')) &&
|
||
|
!path.includes(LOCALES_DIR);
|
||
|
|
||
|
if (canContain) {
|
||
|
files.push(fs.readFileSync(path).toString());
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const unused = [];
|
||
|
for (let key in baseLanguage) {
|
||
|
if (!contains(key, files) && !KNOWN_USED_STRINGS[key]) {
|
||
|
unused.push(key);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
console.log('Unused keys:');
|
||
|
for (let key of unused) {
|
||
|
console.log(key);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
main();
|