From: Jérôme Benoit Date: Thu, 27 Jun 2024 22:43:39 +0000 (+0200) Subject: refactor: move CLI options validation to main() X-Git-Tag: v1.3.7~13^2~2 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=93d95199cbcad411feef0da6e9afff06c46c7e5b;p=e-mobility-charging-stations-simulator.git refactor: move CLI options validation to main() Signed-off-by: Jérôme Benoit --- diff --git a/tests/ocpp-server/server.py b/tests/ocpp-server/server.py index a5ebed38..fdef6bed 100644 --- a/tests/ocpp-server/server.py +++ b/tests/ocpp-server/server.py @@ -130,12 +130,6 @@ class ChargePoint(ocpp.v201.ChargePoint): async def send_command( self, command_name: Action, delay: Optional[float], period: Optional[float] ): - if not delay and not period: - raise ValueError("Either delay or period must be defined") - if delay and delay <= 0: - raise ValueError("Delay must be a positive number") - if period and period <= 0: - raise ValueError("Period must be a positive number") try: if delay and not self._command_timer: self._command_timer = Timer( @@ -201,12 +195,36 @@ async def on_connect( cp.handle_connection_closed() +def check_positive_number(value: Optional[float]): + try: + value = float(value) + except ValueError: + raise argparse.ArgumentTypeError("must be a number") from None + if value <= 0: + raise argparse.ArgumentTypeError("must be a positive number") + return value + + # Main function to start the WebSocket server. async def main(): parser = argparse.ArgumentParser(description="OCPP2 Server") - parser.add_argument("-c", "--command", type=Action, help="OCPP2 Command Name") - parser.add_argument("-d", "--delay", type=float, help="Delay in seconds") - parser.add_argument("-p", "--period", type=float, help="Period in seconds") + parser.add_argument("-c", "--command", type=Action, help="OCPP2 command name") + parsed_args, _ = parser.parse_known_args() + group = parser.add_mutually_exclusive_group( + required=parsed_args.command is not None + ) + group.add_argument( + "-d", + "--delay", + type=check_positive_number, + help="delay in seconds", + ) + group.add_argument( + "-p", + "--period", + type=check_positive_number, + help="period in seconds", + ) args = parser.parse_args()