2021-09-26 18:21:29 +02:00
|
|
|
import ScriptUtils from "./ScriptUtils"
|
2022-08-22 14:46:55 +02:00
|
|
|
import { writeFileSync } from "fs"
|
2022-01-27 01:23:04 +01:00
|
|
|
import {
|
|
|
|
FixLegacyTheme,
|
|
|
|
UpdateLegacyLayer,
|
2023-09-19 14:04:13 +02:00
|
|
|
} from "../src/Models/ThemeConfig/Conversion/LegacyJsonConvert"
|
|
|
|
import Translations from "../src/UI/i18n/Translations"
|
|
|
|
import { Translation } from "../src/UI/i18n/Translation"
|
|
|
|
import { LayerConfigJson } from "../src/Models/ThemeConfig/Json/LayerConfigJson"
|
2023-10-30 13:45:44 +01:00
|
|
|
import { ConversionContext } from "../src/Models/ThemeConfig/Conversion/Conversion"
|
2021-09-26 18:21:29 +02:00
|
|
|
|
2021-10-29 01:41:37 +02:00
|
|
|
/*
|
|
|
|
* This script reads all theme and layer files and reformats them inplace
|
|
|
|
* Use with caution, make a commit beforehand!
|
2021-09-26 19:56:40 +02:00
|
|
|
*/
|
|
|
|
|
2022-03-29 21:55:49 +02:00
|
|
|
const t: Translation = Translations.t.general.add.addNew
|
|
|
|
t.OnEveryLanguage((txt, ln) => {
|
|
|
|
console.log(ln, txt)
|
|
|
|
return txt
|
|
|
|
})
|
|
|
|
|
|
|
|
const articles = {
|
2022-04-03 03:10:06 +02:00
|
|
|
/* de: "eine",
|
2022-03-29 21:55:49 +02:00
|
|
|
es: 'una',
|
|
|
|
fr: 'une',
|
|
|
|
it: 'una',
|
|
|
|
nb_NO: 'en',
|
|
|
|
nl: 'een',
|
|
|
|
pt: 'uma',
|
2022-04-03 03:10:06 +02:00
|
|
|
pt_BR : 'uma',//*/
|
2022-03-29 21:55:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function addArticleToPresets(layerConfig: { presets?: { title: any }[] }) {
|
2022-06-19 22:17:51 +02:00
|
|
|
/*
|
2022-03-29 21:55:49 +02:00
|
|
|
if(layerConfig.presets === undefined){
|
2023-06-20 01:52:15 +02:00
|
|
|
return
|
2022-03-29 21:55:49 +02:00
|
|
|
}
|
|
|
|
for (const preset of layerConfig.presets) {
|
|
|
|
preset.title = new Translation(preset.title, "autofix")
|
|
|
|
.OnEveryLanguage((txt, lang) => {
|
2022-04-03 03:10:06 +02:00
|
|
|
let article = articles[lang]
|
|
|
|
if(lang === "en"){
|
|
|
|
if(["a","e","u","o","i"].some(vowel => txt.toLowerCase().startsWith(vowel))) {
|
|
|
|
article = "an"
|
|
|
|
}else{
|
|
|
|
article = "a"
|
|
|
|
}
|
|
|
|
}
|
2022-03-29 21:55:49 +02:00
|
|
|
if(article === undefined){
|
|
|
|
return txt;
|
|
|
|
}
|
2022-04-03 03:10:06 +02:00
|
|
|
if(txt.startsWith(article+" ")){
|
2022-03-29 21:55:49 +02:00
|
|
|
return txt;
|
|
|
|
}
|
2022-06-07 14:01:27 +02:00
|
|
|
if(txt.startsWith("an ")){
|
|
|
|
return txt;
|
|
|
|
}
|
2022-03-29 21:55:49 +02:00
|
|
|
return article +" " + txt.toLowerCase();
|
|
|
|
})
|
|
|
|
.translations
|
|
|
|
}
|
|
|
|
//*/
|
|
|
|
}
|
2022-03-31 03:13:07 +02:00
|
|
|
|
2021-09-26 19:56:40 +02:00
|
|
|
const layerFiles = ScriptUtils.getLayerFiles()
|
|
|
|
for (const layerFile of layerFiles) {
|
2021-11-21 03:48:05 +01:00
|
|
|
try {
|
2022-03-29 21:55:49 +02:00
|
|
|
const fixed = <LayerConfigJson>(
|
|
|
|
new UpdateLegacyLayer().convertStrict(
|
|
|
|
layerFile.parsed,
|
2023-10-30 13:45:44 +01:00
|
|
|
ConversionContext.construct([layerFile.path.split("/").at(-1)], ["update legacy"])
|
2022-09-08 21:40:48 +02:00
|
|
|
)
|
|
|
|
)
|
2022-03-31 03:13:07 +02:00
|
|
|
addArticleToPresets(fixed)
|
2023-06-20 01:52:15 +02:00
|
|
|
writeFileSync(layerFile.path, JSON.stringify(fixed, null, " ") + "\n")
|
2021-11-21 03:48:05 +01:00
|
|
|
} catch (e) {
|
|
|
|
console.error("COULD NOT LINT LAYER" + layerFile.path + ":\n\t" + e)
|
|
|
|
}
|
2021-09-26 19:56:40 +02:00
|
|
|
}
|
2021-09-26 19:59:51 +02:00
|
|
|
|
2021-09-26 19:56:40 +02:00
|
|
|
const themeFiles = ScriptUtils.getThemeFiles()
|
|
|
|
for (const themeFile of themeFiles) {
|
2021-11-21 03:48:05 +01:00
|
|
|
try {
|
2022-02-09 03:48:55 +01:00
|
|
|
const fixed = new FixLegacyTheme().convertStrict(
|
|
|
|
themeFile.parsed,
|
2023-10-30 13:45:44 +01:00
|
|
|
ConversionContext.construct([themeFile.path.split("/").at(-1)], ["update legacy layer"])
|
2022-09-08 21:40:48 +02:00
|
|
|
)
|
2022-03-29 21:55:49 +02:00
|
|
|
for (const layer of fixed.layers) {
|
|
|
|
if (layer["presets"] !== undefined) {
|
|
|
|
addArticleToPresets(<any>layer)
|
|
|
|
}
|
|
|
|
}
|
2022-03-31 03:13:07 +02:00
|
|
|
// extractInlineLayer(fixed)
|
2023-10-30 13:45:44 +01:00
|
|
|
const endsWithNewline = themeFile.raw.at(-1) === "\n"
|
|
|
|
writeFileSync(
|
|
|
|
themeFile.path,
|
|
|
|
JSON.stringify(fixed, null, " ") + (endsWithNewline ? "\n" : "")
|
|
|
|
)
|
2021-11-21 03:48:05 +01:00
|
|
|
} catch (e) {
|
|
|
|
console.error("COULD NOT LINT THEME" + themeFile.path + ":\n\t" + e)
|
|
|
|
}
|
2021-09-26 19:58:11 +02:00
|
|
|
}
|