| 
									
										
										
										
											2021-09-26 18:21:29 +02:00
										 |  |  | import ScriptUtils from "./ScriptUtils"; | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  | import {mkdirSync, writeFileSync} from "fs"; | 
					
						
							| 
									
										
										
										
											2022-01-27 01:23:04 +01:00
										 |  |  | import {FixLegacyTheme, UpdateLegacyLayer} from "../Models/ThemeConfig/Conversion/LegacyJsonConvert"; | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  | import Translations from "../UI/i18n/Translations"; | 
					
						
							|  |  |  | import {Translation} from "../UI/i18n/Translation"; | 
					
						
							|  |  |  | import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson"; | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  | import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson"; | 
					
						
							| 
									
										
										
										
											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){ | 
					
						
							|  |  |  |         return  | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     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; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 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, "While linting " + layerFile.path); | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  |         addArticleToPresets(fixed) | 
					
						
							| 
									
										
										
										
											2021-12-21 18:35:31 +01:00
										 |  |  |         writeFileSync(layerFile.path, JSON.stringify(fixed, null, "  ")) | 
					
						
							| 
									
										
										
										
											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, "While linting " + themeFile.path); | 
					
						
							| 
									
										
										
										
											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)
 | 
					
						
							| 
									
										
										
										
											2021-12-21 18:35:31 +01:00
										 |  |  |         writeFileSync(themeFile.path, JSON.stringify(fixed, null, "  ")) | 
					
						
							| 
									
										
										
										
											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
										 |  |  | } |