Issues (17)

hooks/pre_gen_project.py (4 issues)

1
#!/bin/env python3
2
"""
3
Cookiecutter pre generation hook script that handles operations before the
4
template project is used to generate a target project.
5
"""
6
import re
7
import sys
8
9
10
def check_python_min_max_versions():
11
    """
12
    Check to make sure project_python_min_version and
13
    project_python_max_version are valid.
14
    """
15
16
    # fmt: off
17
    project_python_min_version = {{ cookiecutter.project_python_min_version }}  # noqa pylint: disable=undefined-variable
0 ignored issues
show
No space allowed after bracket
Loading history...
No space allowed before bracket
Loading history...
18
    project_python_max_version = {{ cookiecutter.project_python_max_version }}  # noqa pylint: disable=undefined-variable
0 ignored issues
show
No space allowed after bracket
Loading history...
No space allowed before bracket
Loading history...
19
    # fmt: on
20
    project_valid_python_versions = (
21
        "{{cookiecutter.project_valid_python_versions}}".replace(" ", "").split(",")
22
    )  # noqa pylint: disable=line-too-long
23
24
    if not re.search(r"\d+.\d+", str(project_python_min_version)):
25
        print(("** ERROR: Invalid value provided for" ' "project_python_min_version".'))
26
        sys.exit(1)
27
    elif not re.search(r"\d+.\d+", str(project_python_max_version)):
28
        print(("** ERROR: Invalid value provided for" ' "project_python_max_version".'))
29
        sys.exit(1)
30
    elif str(project_python_min_version) not in project_valid_python_versions:
31
        print(
32
            (
33
                "** ERROR: Invalid value provided for"
34
                f' "project_python_min_version" {project_python_min_version}.'
35
                f" Expecting on of: {project_valid_python_versions}"
36
            )
37
        )
38
        sys.exit(1)
39
    elif str(project_python_max_version) not in project_valid_python_versions:
40
        print(
41
            (
42
                '** ERROR: Invalid value provided for "project_python_max_version"'
43
                f" {project_python_max_version}."
44
                f" Expecting on of: {project_valid_python_versions}"
45
            )
46
        )
47
        sys.exit(1)
48
49
    if project_python_min_version > project_python_max_version:
50
        print(
51
            f'** ERROR: "project_python_min_version" {project_python_min_version} has'
52
            ' to be greater than or equal to "project_python_max_version"'
53
            f" {project_python_max_version}"
54
        )
55
        sys.exit(1)
56
57
58
if __name__ == "__main__":
59
    check_python_min_max_versions()
60