From 175d640d3ca67b24fade4d2776604caa0d15d182 Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Fri, 5 Jul 2024 17:16:25 -0400 Subject: [PATCH] Allow "install" phase for properties for websocket ports --- src/qz/build/provision/Step.java | 22 ++++++++++++------- .../provision/resources/provision.json | 11 +++++++++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/qz/build/provision/Step.java b/src/qz/build/provision/Step.java index 6c73ce661..8717001f8 100644 --- a/src/qz/build/provision/Step.java +++ b/src/qz/build/provision/Step.java @@ -223,7 +223,7 @@ private Step sanitize() { .enforcePhase(Type.CERT, Phase.STARTUP) .enforcePhase(Type.SOFTWARE, Phase.INSTALL) .enforcePhase(Type.REMOVER, Phase.INSTALL) - .enforcePhase(Type.PROPERTY, Phase.CERTGEN) + .enforcePhase(Type.PROPERTY, Phase.CERTGEN, Phase.INSTALL) .validateRemover(); } @@ -283,15 +283,21 @@ private Step validateArch() { return this; } - private Step enforcePhase(Type matchType, Phase requiredPhase) { + private Step enforcePhase(Type matchType, Phase ... requiredPhases) { + if(requiredPhases.length == 0) { + throw new UnsupportedOperationException("At least one Phase must be specified"); + } if(type == matchType) { - if(phase == null) { - phase = requiredPhase; - log.debug("Phase is null, defaulting to '{}' based on Type '{}'", phase, type); - } else if (phase != requiredPhase) { - log.debug("Phase '{}' is unsupported for Type '{}', defaulting to '{}'", phase, type, - phase = requiredPhase); + for(Phase requiredPhase : requiredPhases) { + if (phase == null) { + phase = requiredPhase; + log.debug("Phase is null, defaulting to '{}' based on Type '{}'", phase, type); + return this; + } else if (phase == requiredPhase) { + return this; + } } + log.debug("Phase '{}' is unsupported for Type '{}', defaulting to '{}'", phase, type, phase = requiredPhases[0]); } return this; } diff --git a/test/qz/installer/provision/resources/provision.json b/test/qz/installer/provision/resources/provision.json index 374f63cf5..d0c9497b7 100644 --- a/test/qz/installer/provision/resources/provision.json +++ b/test/qz/installer/provision/resources/provision.json @@ -89,14 +89,23 @@ "data": "cert1.crt" }, { - "description": "[PROPERTY] at 'certgen' (qz-tray.properties)", + "description": "[PROPERTY] at wrong phase (qz-tray.properties)", + "type": "property", + "phase": "startup", + "os": "*", + "data": "foo=bar" + }, + { + "description": "[PROPERTY] at 'install' (qz-tray.properties)", "type": "property", + "phase": "install", "os": "*", "data": "websocket.secure.ports=9191,9292,9393,9494" }, { "description": "[PROPERTY] at 'certgen' (qz-tray.properties)", "type": "property", + "phase": "install", "os": "*", "data": "websocket.insecure.ports=9192,9293,9394,9495" },