# 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'},
{'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()