diff options
Diffstat (limited to 'src/libs/3rdparty/syntax-highlighting/data/generators/generate-spdx-syntax.py')
-rw-r--r-- | src/libs/3rdparty/syntax-highlighting/data/generators/generate-spdx-syntax.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/libs/3rdparty/syntax-highlighting/data/generators/generate-spdx-syntax.py b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-spdx-syntax.py new file mode 100644 index 0000000000..73ff29092c --- /dev/null +++ b/src/libs/3rdparty/syntax-highlighting/data/generators/generate-spdx-syntax.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Generate SPDX-Comments syntax file +# +# SPDX-FileCopyrightText: 2020 Alex Turbov <i.zaufi@gmail.com> +# SPDX-License-Identifier: MIT +# +# To install prerequisites: +# +# $ pip install --user click jinja2 +# +# To use: +# +# $ ./generate-spdx-syntax.py > ../syntax/spdx-comments.xml +# + +import json +import pathlib +import urllib.request + +import click +import jinja2 + + +def get_json(url): + with urllib.request.urlopen(url=url) as body: + return json.load(body) + + +@click.command() +@click.argument('template', type=click.File('r'), default='./spdx-comments.xml.tpl') +def cli(template): + + data = { + 'licenses': [ + *filter( + lambda l: not l['licenseId'].endswith('+') + , get_json(url='https://spdx.org/licenses/licenses.json')['licenses'] + ) + ] + , 'exceptions': [ + *filter( + lambda l: not l['licenseExceptionId'].endswith('+') + , get_json(url='https://spdx.org/licenses/exceptions.json')['exceptions'] + ) + ] + } + + env = jinja2.Environment( + keep_trailing_newline=True + ) + env.block_start_string = '<!--[' + env.block_end_string = ']-->' + env.variable_start_string = '<!--{' + env.variable_end_string = '}-->' + env.comment_start_string = '<!--#' + env.comment_end_string = '#-->' + + tpl = env.from_string(template.read()) + result = tpl.render(data) + print(result.strip(), end=None) + + +if __name__ == '__main__': + cli() + # TODO Handle execptions and show errors |