From 1cdb6d661f8b1d009eb7f55dba4256924090079e Mon Sep 17 00:00:00 2001 From: David Boreham Date: Wed, 28 Sep 2022 10:07:13 -0600 Subject: [PATCH] Allow selective container build --- app/build_containers.py | 11 +++++++++-- app/util.py | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 app/util.py diff --git a/app/build_containers.py b/app/build_containers.py index 51c43615..25e8f8dc 100644 --- a/app/build_containers.py +++ b/app/build_containers.py @@ -26,13 +26,16 @@ import argparse from decouple import config import subprocess import click +from .util import include_exclude_check # TODO: find a place for this # epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)" @click.command() +@click.option('--include', help="only build these containers") +@click.option('--exclude', help="don\'t build these containers") @click.pass_context -def command(ctx): +def command(ctx, include, exclude): '''build the set of containers required for a complete stack''' quiet = ctx.obj.quiet @@ -71,4 +74,8 @@ def command(ctx): print("Skipped") for container in containers: - process_container(container) + if include_exclude_check(container, include, exclude): + process_container(container) + else: + if verbose: + print(f"Excluding: {container}") diff --git a/app/util.py b/app/util.py new file mode 100644 index 00000000..48381bf0 --- /dev/null +++ b/app/util.py @@ -0,0 +1,24 @@ +# Copyright © 2022 Cerc + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +def include_exclude_check(s, include, exclude): + if include == None and exclude == None: + return True + if include != None: + include_list = include.split(",") + return s in include_list + if exclude != None: + exclude_list = exclude.split(",") + return s not in exclude_list