mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Disallow template strings to t
function in verify-locales script (#7694)
This commit is contained in:
parent
69def1fcab
commit
f9eac81a85
@ -161,12 +161,25 @@ async function verifyEnglishLocale (fix = false) {
|
|||||||
const englishLocale = await getLocale('en')
|
const englishLocale = await getLocale('en')
|
||||||
const javascriptFiles = await findJavascriptFiles(path.resolve(__dirname, '..', 'ui'))
|
const javascriptFiles = await findJavascriptFiles(path.resolve(__dirname, '..', 'ui'))
|
||||||
|
|
||||||
const regex = /'(\w+)'|"(\w+)"/g
|
// match "t(`...`)" because constructing message keys from template strings
|
||||||
|
// prevents this script from finding the messages, and then inappropriately
|
||||||
|
// deletes them
|
||||||
|
const templateStringRegex = /\bt\(`.*`\)/g
|
||||||
|
const templateUsage = []
|
||||||
|
|
||||||
|
// match the keys from the locale file
|
||||||
|
const keyRegex = /'(\w+)'|"(\w+)"/g
|
||||||
const usedMessages = new Set()
|
const usedMessages = new Set()
|
||||||
for await (const fileContents of getFileContents(javascriptFiles)) {
|
for await (const fileContents of getFileContents(javascriptFiles)) {
|
||||||
for (const match of matchAll.call(fileContents, regex)) {
|
for (const match of matchAll.call(fileContents, keyRegex)) {
|
||||||
usedMessages.add(match[1] || match[2])
|
usedMessages.add(match[1] || match[2])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const templateMatches = fileContents.match(templateStringRegex)
|
||||||
|
if (templateMatches) {
|
||||||
|
// concat doesn't work here for some reason
|
||||||
|
templateMatches.forEach(match => templateUsage.push(match))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// never consider these messages as unused
|
// never consider these messages as unused
|
||||||
@ -176,16 +189,24 @@ async function verifyEnglishLocale (fix = false) {
|
|||||||
const unusedMessages = englishMessages
|
const unusedMessages = englishMessages
|
||||||
.filter(message => !messageExceptions.includes(message) && !usedMessages.has(message))
|
.filter(message => !messageExceptions.includes(message) && !usedMessages.has(message))
|
||||||
|
|
||||||
|
|
||||||
if (unusedMessages.length) {
|
if (unusedMessages.length) {
|
||||||
console.log(`**en**: ${unusedMessages.length} unused messages`)
|
console.log(`**en**: ${unusedMessages.length} unused messages`)
|
||||||
log.info(`Messages not present in UI:`)
|
log.info(`Messages not present in UI:`)
|
||||||
unusedMessages.forEach(function (key) {
|
unusedMessages.forEach(function (key) {
|
||||||
log.info(` - [ ] ${key}`)
|
log.info(` - [ ] ${key}`)
|
||||||
})
|
})
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
if (templateUsage.length) {
|
||||||
|
log.info(`Forbidden use of template strings in 't' function:`)
|
||||||
|
templateUsage.forEach(function (occurrence) {
|
||||||
|
log.info(` - ${occurrence}`)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!unusedMessages.length && !templateUsage.length) {
|
||||||
log.info('Full coverage : )')
|
log.info('Full coverage : )')
|
||||||
return false
|
return false // failed === false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unusedMessages.length > 0 && fix) {
|
if (unusedMessages.length > 0 && fix) {
|
||||||
@ -196,7 +217,7 @@ async function verifyEnglishLocale (fix = false) {
|
|||||||
await writeLocale('en', newLocale)
|
await writeLocale('en', newLocale)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true // failed === true
|
||||||
}
|
}
|
||||||
|
|
||||||
async function findJavascriptFiles (rootDir) {
|
async function findJavascriptFiles (rootDir) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user