From 54e1f5d44ccd2a7cc7545311df0d1f21a583d39d Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sat, 5 Jul 2025 04:37:16 +0200 Subject: [PATCH] Refactoring: simplify working with 'DoesImageExist' --- scripts/generateLayerOverview.ts | 24 ++++--------------- .../ThemeConfig/Conversion/Validation.ts | 16 +++++++++++++ 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index 553b2e0ed1..49148cdeb8 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -1,6 +1,5 @@ import ScriptUtils from "./ScriptUtils" import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs" -import licenses from "../src/assets/generated/license_info.json" import { ThemeConfigJson } from "../src/Models/ThemeConfig/Json/ThemeConfigJson" import { LayerConfigJson } from "../src/Models/ThemeConfig/Json/LayerConfigJson" import Constants from "../src/Models/Constants" @@ -14,11 +13,7 @@ import { import { Translation } from "../src/UI/i18n/Translation" import { PrepareLayer } from "../src/Models/ThemeConfig/Conversion/PrepareLayer" import { PrepareTheme } from "../src/Models/ThemeConfig/Conversion/PrepareTheme" -import { - Conversion, - DesugaringContext, - DesugaringStep, -} from "../src/Models/ThemeConfig/Conversion/Conversion" +import { Conversion, DesugaringContext, DesugaringStep } from "../src/Models/ThemeConfig/Conversion/Conversion" import { Utils } from "../src/Utils" import Script from "./Script" import { AllSharedLayers } from "../src/Customizations/AllSharedLayers" @@ -35,10 +30,7 @@ import { Translatable } from "../src/Models/ThemeConfig/Json/Translatable" import { ValidateThemeAndLayers } from "../src/Models/ThemeConfig/Conversion/ValidateThemeAndLayers" import { ExtractImages } from "../src/Models/ThemeConfig/Conversion/FixImages" import { TagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/TagRenderingConfigJson" -import { - LayerConfigDependencyGraph, - LevelInfo, -} from "../src/Models/ThemeConfig/LayerConfigDependencyGraph" +import { LayerConfigDependencyGraph, LevelInfo } from "../src/Models/ThemeConfig/LayerConfigDependencyGraph" // This scripts scans 'src/assets/layers/*.json' for layer definition files and 'src/assets/themes/*.json' for theme definition files. // It spits out an overview of those to be used to load them @@ -650,11 +642,7 @@ class LayerOverviewUtils extends Script { const forceReload = args.some((a) => a == "--force") - const licensePaths = new Set() - for (const i in licenses) { - licensePaths.add(licenses[i].path) - } - const doesImageExist = new DoesImageExist(licensePaths, existsSync) + const doesImageExist = DoesImageExist.constructWithLicenses(existsSync) const sharedLayers = this.buildLayerIndex(doesImageExist) const priviliged = new Set(Constants.priviliged_layers) @@ -677,7 +665,6 @@ class LayerOverviewUtils extends Script { } const recompiledThemes: string[] = [] const sharedThemes = this.buildThemeIndex( - licensePaths, sharedLayers, recompiledThemes, forceReload, @@ -990,7 +977,6 @@ class LayerOverviewUtils extends Script { } private buildThemeIndex( - licensePaths: Set, sharedLayers: Map, recompiledThemes: string[], forceReload: boolean, @@ -1004,7 +990,7 @@ class LayerOverviewUtils extends Script { themeFiles.map((th) => th.parsed) ) - const trs = this.getSharedTagRenderings(new DoesImageExist(licensePaths, existsSync)) + const trs = this.getSharedTagRenderings(DoesImageExist.constructWithLicenses(existsSync)) const convertState: DesugaringContext = { sharedLayers, @@ -1076,7 +1062,7 @@ class LayerOverviewUtils extends Script { ConversionContext.construct([themePath], ["PrepareLayer"]) ) new ValidateThemeAndLayers( - new DoesImageExist(licensePaths, existsSync, knownTagRenderings), + DoesImageExist.constructWithLicenses(existsSync, knownTagRenderings), themePath, true, knownTagRenderings diff --git a/src/Models/ThemeConfig/Conversion/Validation.ts b/src/Models/ThemeConfig/Conversion/Validation.ts index 6bc79f6f3d..a3f7f4b1a0 100644 --- a/src/Models/ThemeConfig/Conversion/Validation.ts +++ b/src/Models/ThemeConfig/Conversion/Validation.ts @@ -22,6 +22,7 @@ import PointRenderingConfigJson from "../Json/PointRenderingConfigJson" import { PrevalidateLayer } from "./PrevalidateLayer" import { AvailableRasterLayers } from "../../RasterLayers" import { eliCategory } from "../../RasterLayerProperties" +import licenses from "../../../assets/generated/license_info.json" export class ValidateLanguageCompleteness extends DesugaringStep { private readonly _languages: string[] @@ -126,6 +127,21 @@ export class DoesImageExist extends DesugaringStep { } return image } + + private static licensePaths: Set + + public static constructWithLicenses(checkExistsSync?: (path: string) => boolean, ignore?: Set) { + if (!DoesImageExist.licensePaths) { + + const licensePaths = new Set() + for (const i in licenses) { + licensePaths.add(licenses[i].path) + } + DoesImageExist.licensePaths = licensePaths + } + return new DoesImageExist(DoesImageExist.licensePaths, checkExistsSync, ignore) + } + } class OverrideShadowingCheck extends DesugaringStep {