From 12211d452a36ef92cdef0786584d8a0c9025c5fa Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 21 Feb 2020 09:03:59 +1000 Subject: [PATCH] gitlab CI: extend the generation script to be somewhat more generic Mostly busywork, it moves the hardcoded paths into a variables, etc. Signed-off-by: Peter Hutterer --- .gitlab-ci/generate-gitlab-ci.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci/generate-gitlab-ci.py b/.gitlab-ci/generate-gitlab-ci.py index 806d7c8..1bbebb3 100755 --- a/.gitlab-ci/generate-gitlab-ci.py +++ b/.gitlab-ci/generate-gitlab-ci.py @@ -3,7 +3,13 @@ # This file generates the .gitlab-ci.yml file that defines the pipeline. +import argparse import jinja2 +import os +import sys + +from pathlib import Path + distributions = [ {'name': 'fedora', 'version': '30'}, @@ -35,16 +41,34 @@ distributions = [ {'name': 'alpine', 'version': 'latest'}, ] +# The various sources for templating +SOURCE_DIR = Path('.gitlab-ci') +TEMPLATE_FILE = 'gitlab-ci.tmpl' + +BASE_DIR = Path('.') +OUTPUT_FILE = '.gitlab-ci.yml' def generate_template(): - env = jinja2.Environment(loader=jinja2.FileSystemLoader('./.gitlab-ci'), + env = jinja2.Environment(loader=jinja2.FileSystemLoader(os.fspath(SOURCE_DIR)), trim_blocks=True, lstrip_blocks=True) - template = env.get_template('gitlab-ci.tmpl') + template = env.get_template(TEMPLATE_FILE) config = {'distributions': distributions} - with open('.gitlab-ci.yml', 'w') as fd: + with open(BASE_DIR / OUTPUT_FILE, 'w') as fd: template.stream(config).dump(fd) if __name__ == '__main__': + description = (''' + This script generates the .gitlab-ci.yml file. + + It must be run from the git repository root directory and will overwrite + the existing .gitlab-ci.yml file. + ''') + parser = argparse.ArgumentParser(description=description) + parser.parse_args() + + if not SOURCE_DIR.exists(): + print('Error: run me from the top-level tree') + sys.exit(1) generate_template() -- 2.7.4