| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | import ScriptUtils from "./ScriptUtils" | 
					
						
							|  |  |  | import { writeFileSync } from "fs" | 
					
						
							|  |  |  | 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 18:08:49 +01:00
										 |  |  | import themeconfig from "../src/assets/schemas/layoutconfigmeta.json" | 
					
						
							|  |  |  | import layerconfig from "../src/assets/schemas/layerconfigmeta.json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { Utils } from "../src/Utils" | 
					
						
							|  |  |  | import { ConfigMeta } from "../src/UI/Studio/configMeta" | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  | import { ConversionContext } from "../src/Models/ThemeConfig/Conversion/ConversionContext" | 
					
						
							| 
									
										
										
										
											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
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2023-10-30 18:08:49 +01:00
										 |  |  | const themeAttributesOrder = Utils.Dedup( | 
					
						
							|  |  |  |     (<ConfigMeta[]>themeconfig).filter((c) => c.path.length === 1).map((c) => c.path[0]) | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | const layerAttributesOrder = Utils.Dedup( | 
					
						
							|  |  |  |     (<ConfigMeta[]>layerconfig).filter((c) => c.path.length === 1).map((c) => c.path[0]) | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | const t: Translation = Translations.t.general.add.addNew | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  | t.OnEveryLanguage((txt, ln) => { | 
					
						
							|  |  |  |     console.log(ln, txt) | 
					
						
							|  |  |  |     return txt | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-30 18:08:49 +01:00
										 |  |  | function reorder(object: object, order: string[]) { | 
					
						
							|  |  |  |     const allKeys = new Set<string>(Object.keys(object)) | 
					
						
							|  |  |  |     const copy = {} | 
					
						
							|  |  |  |     for (const key of order) { | 
					
						
							|  |  |  |         copy[key] = object[key] | 
					
						
							|  |  |  |         allKeys.delete(key) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     for (const key of allKeys) { | 
					
						
							|  |  |  |         copy[key] = object[key] | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return copy | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  | const layerFiles = ScriptUtils.getLayerFiles() | 
					
						
							| 
									
										
										
										
											2021-09-26 19:56:40 +02:00
										 |  |  | for (const layerFile of layerFiles) { | 
					
						
							| 
									
										
										
										
											2021-11-21 03:48:05 +01:00
										 |  |  |     try { | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +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
										 |  |  |             ) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2023-10-30 18:08:49 +01:00
										 |  |  |         const reordered = reorder(fixed, layerAttributesOrder) | 
					
						
							|  |  |  |         writeFileSync(layerFile.path, JSON.stringify(reordered, 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-09-08 21:40:48 +02: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
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2024-01-24 23:45:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         // extractInlineLayer(fixed)
 | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         const endsWithNewline = themeFile.raw.at(-1) === "\n" | 
					
						
							| 
									
										
										
										
											2023-10-30 18:08:49 +01:00
										 |  |  |         const ordered = reorder(fixed, themeAttributesOrder) | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         writeFileSync( | 
					
						
							|  |  |  |             themeFile.path, | 
					
						
							| 
									
										
										
										
											2023-10-30 18:08:49 +01:00
										 |  |  |             JSON.stringify(ordered, null, "  ") + (endsWithNewline ? "\n" : "") | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											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
										 |  |  | } |