diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index 49148cdeb..0c2cad322 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -11,8 +11,8 @@ import { ValidateThemeEnsemble, } from "../src/Models/ThemeConfig/Conversion/Validation" import { Translation } from "../src/UI/i18n/Translation" -import { PrepareLayer } from "../src/Models/ThemeConfig/Conversion/PrepareLayer" -import { PrepareTheme } from "../src/Models/ThemeConfig/Conversion/PrepareTheme" +import { OrderLayer, PrepareLayer } from "../src/Models/ThemeConfig/Conversion/PrepareLayer" +import { OrderTheme, PrepareTheme } from "../src/Models/ThemeConfig/Conversion/PrepareTheme" import { Conversion, DesugaringContext, DesugaringStep } from "../src/Models/ThemeConfig/Conversion/Conversion" import { Utils } from "../src/Utils" import Script from "./Script" @@ -309,6 +309,37 @@ class LayerBuilder extends Conversion> { } } +class ReorderFiles extends Script { + constructor() { + super("Reorders the attributes in the layers and theme files") + } + + private lintAll(items: {parsed: T, path: string}[], reorder: DesugaringStep){ + for (const item of items) { + const l = reorder.convertStrict(item.parsed, ConversionContext.construct([item.path], ["reorder"])) + const content = JSON.stringify(l, null, " ") + const contentOld = JSON.stringify(item.parsed, null, " ") + if(contentOld === content){ + continue + } + const orig = readFileSync(item.path, "utf-8") + const ending = orig.endsWith("\n")? "\n" : "" + writeFileSync(item.path, content+ending, "utf-8") + } + } + + async main(){ + console.log("Reordering layers and themes") + const orderL = new OrderLayer() + const layers =ScriptUtils.getLayerFiles() + this.lintAll(layers, orderL) + + const orderT = new OrderTheme() + const themes = ScriptUtils.getThemeFiles() + this.lintAll(themes, orderT) + } +} + class LayerOverviewUtils extends Script { public static readonly layerPath = "./public/assets/generated/layers/" public static readonly themePath = "./public/assets/generated/themes/" @@ -1163,3 +1194,4 @@ class LayerOverviewUtils extends Script { new GenerateFavouritesLayer().run() new LayerOverviewUtils().run() +new ReorderFiles().run() diff --git a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts index 6d21e86bc..984987cd8 100644 --- a/src/Models/ThemeConfig/Conversion/PrepareLayer.ts +++ b/src/Models/ThemeConfig/Conversion/PrepareLayer.ts @@ -1078,7 +1078,7 @@ class DeriveSource extends DesugaringStep { } } -class OrderLayer extends DesugaringStep{ +export class OrderLayer extends DesugaringStep{ private static readonly layerAttributesOrder: ReadonlyArray = Utils.Dedup( (layerconfig).filter((c) => c.path.length === 1).map((c) => c.path[0]) diff --git a/src/Models/ThemeConfig/Conversion/PrepareTheme.ts b/src/Models/ThemeConfig/Conversion/PrepareTheme.ts index 2361eb1d4..7b0089828 100644 --- a/src/Models/ThemeConfig/Conversion/PrepareTheme.ts +++ b/src/Models/ThemeConfig/Conversion/PrepareTheme.ts @@ -603,7 +603,7 @@ class PostvalidateTheme extends DesugaringStep { return json } } -class OrderTheme extends DesugaringStep{ +export class OrderTheme extends DesugaringStep{ private static readonly themeAttributesOrder: ReadonlyArray = Utils.Dedup( (themeconfig).filter((c) => c.path.length === 1).map((c) => c.path[0])