From 48790423d11152c460a904ca00dbb49e06f7bb82 Mon Sep 17 00:00:00 2001 From: "C. Allwardt" <3979063+craig8@users.noreply.github.com> Date: Tue, 9 Jan 2024 18:05:04 -0800 Subject: [PATCH] Updates build-gridappsd-container script to use python --- build-gridappsd-container | 68 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/build-gridappsd-container b/build-gridappsd-container index 89b0af39c..1de99f580 100755 --- a/build-gridappsd-container +++ b/build-gridappsd-container @@ -1,7 +1,65 @@ -docker pull gridappsd/gridappsd_base:master +""" +Script for building the gridappsd-container. -./gradlew clean -rm -rf gov.pnnl.goss/gridappsd/generated -./gradlew export +This script pulls the gridappsd_base docker image, cleans the project, exports the project, and builds the gridappsd-container. -docker build --no-cache --network=host -t gridappsd:local . +Usage: + python build-gridappsd-container.py [--output_version ] + +Arguments: + base_version (str): The version of the gridappsd_base docker image. + output_version (str, optional): The output tag version for local development. Default is "local". + +Example: + python build-gridappsd-container.py 2.3.0 --output_version 2.3.1 + +""" + +import argparse +import subprocess +import shutil + + +def execute(cmd: str | list[str]): + """ + Executes a command in the shell and prints the output. + + Args: + cmd (str | list[str]): The command to execute. If a string, it will be split into a list of arguments. + + Raises: + subprocess.CalledProcessError: If the command returns a non-zero exit code. + + """ + if isinstance(cmd, str): + cmd = cmd.split(" ") + + with subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) as p: + for line in iter(p.stdout.readline, ""): + if line.strip(): + print(line.strip()) + + p.wait() + if p.returncode: + raise subprocess.CalledProcessError(p.returncode, cmd=" ".join(cmd)) + + + +if __name__ == '__main__': + + parser = argparse.ArgumentParser() + + parser.add_argument("base_version", + help="The gridappsd_base docker image version") + parser.add_argument("--output_version", default="local", + help="The output tag version for local development") + + opts = parser.parse_args() + + base_version = opts.base_version + + execute(f"docker pull gridappsd/gridappsd_base:{opts.base_version}") + execute("./gradlew clean") + shutil.rmtree("gov.pnnl.goss/gridappsd/generated", ignore_errors=True) + execute("./gradlew export") + execute(f"docker build --no-cache --network=host -t gridappsd:{opts.output_version} .")