Skip to content
Snippets Groups Projects
post_gen_project.py 9.97 KiB
import git
import os
import subprocess as spr
import glob
import shutil


{% if cookiecutter.__include_deployment == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/deploymentconfig.yaml")
os.remove("templates/{{cookiecutter.template_base_name}}/deployment.yaml")
{% if cookiecutter.__include_workers == "no" %}
shutil.rmtree(
    "templates/{{cookiecutter.template_base_name}}/helpers/deployment"
)
{% endif %}
{% if cookiecutter.__include_build_config == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/imagestream.yaml")
{% endif %}
{% else %}
{% if cookiecutter.__deployment_type != "Deployment" %}
os.remove("templates/{{cookiecutter.template_base_name}}/deployment.yaml")
{% endif %}
{% if cookiecutter.__deployment_type != "DeploymentConfig" %}
os.remove("templates/{{cookiecutter.template_base_name}}/deploymentconfig.yaml")
os.remove("templates/{{cookiecutter.template_base_name}}/imagestream.yaml")
{% endif %}
{% endif %}

{% if cookiecutter.__include_workers == "no" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/"
    "worker-deploymentconfigs.yaml"
)
os.remove(
    "templates/{{cookiecutter.template_base_name}}/worker-deployments.yaml"
)
shutil.rmtree(
    "templates/{{cookiecutter.template_base_name}}/helpers/workers"
)
{% elif cookiecutter.__deployment_type != "Deployment" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/"
    "worker-deployments.yaml"
)
{% elif cookiecutter.__deployment_type != "DeploymentConfig" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/worker-deploymentconfigs.yaml"
)
{% endif %}

{% if cookiecutter.__include_build_config == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/buildconfig.yaml")
shutil.rmtree(
    "templates/{{cookiecutter.template_base_name}}/helpers/buildconfig"
)
os.remove("templates/{{cookiecutter.template_base_name}}/build-secret.yaml")
os.remove("templates/k8sgitlab-secret.yaml")
{% elif cookiecutter.__include_k8sgitlab_secret == "no" %}
os.remove("templates/k8sgitlab-secret.yaml")
{% endif %}

{% if cookiecutter.__include_cronjobs == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/cronjobs.yaml")
shutil.rmtree(
    "templates/{{cookiecutter.template_base_name}}/helpers/cronjobs"
)
{% endif %}

{% if cookiecutter.__include_service == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/service.yaml")
{% endif %}

{% if cookiecutter.__include_route == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/route.yaml")
{% endif %}

{% if cookiecutter.__include_volume == "no" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/persistentvolumeclaim.yaml"
)
os.remove(
    "templates/{{cookiecutter.template_base_name}}/persistentvolumeclaims.yaml"
)
os.remove(
    "templates/{{cookiecutter.template_base_name}}/helpers/_builtin_volumes.tpl"
)
{% elif cookiecutter.__include_volume == "one" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/persistentvolumeclaims.yaml"
)
os.remove(
    "templates/{{cookiecutter.template_base_name}}/helpers/_builtin_volumes.tpl"
)
{% elif cookiecutter.__include_volume == "many" %}
os.remove(
    "templates/{{cookiecutter.template_base_name}}/persistentvolumeclaim.yaml"
)
{% endif %}

{% if cookiecutter.__include_secret == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/secret.yaml")
os.remove("templates/{{cookiecutter.template_base_name}}/helpers/_builtin_secrets.tpl")
{% endif %}

{% if cookiecutter.__include_configmap == "no" %}
os.remove("templates/{{cookiecutter.template_base_name}}/configmap.yaml")
os.remove("templates/{{cookiecutter.template_base_name}}/helpers/_builtin_configmap.tpl")
{% endif %}

{% if cookiecutter.use_reuse == "yes" %}

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "{{ cookiecutter.documentation_license }}",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "--recursive",
        "README.md",
    ]
)

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "{{ cookiecutter.supplementary_files_license }}",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "--recursive",
        ".gitignore",
        ".pre-commit-config.yaml",
        "Chart.yaml",
        "values.yaml",
        "linter_values.yaml",
        ".gitlab-ci.yml",
    ]
)

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "{{ cookiecutter.supplementary_files_license }}",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "--recursive",
        "--style",
        "python",
        ".helmignore",
    ]
)

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "{{ cookiecutter.templates_license }}",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "--recursive",
        "--force-dot-license",
        "templates/NOTES.txt",
    ] + glob.glob("templates/{{cookiecutter.template_base_name}}/*/*.tpl")
    + glob.glob("templates/{{cookiecutter.template_base_name}}/*/*/*.tpl")
)

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "{{ cookiecutter.templates_license }}",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "--recursive",
        "templates",
    ]
)

spr.check_call(
    [
        "reuse",
        "annotate",
        "--year",
        "{{ cookiecutter.copyright_year }}",
        "--license",
        "Unlicense",
        "--copyright",
        "{{ cookiecutter.copyright_holder }}",
        "scripts/print_version.py",
    ]
)

spr.check_call(["reuse", "download", "--all"])

{% endif %}

print("Fixing files for project at {{cookiecutter.project_slug}}")
repo = git.Repo.init(".", mkdir=False)
{% if cookiecutter.git_remote_protocoll == "ssh" %}
repo.create_remote(
    "origin",
    "git@{{ cookiecutter.gitlab_host }}:{{ cookiecutter.gitlab_username }}/{{ cookiecutter.project_slug }}.git",
)
{% else %}
repo.create_remote(
    "origin",
    "https://{{ cookiecutter.gitlab_host }}/{{ cookiecutter.gitlab_username }}/{{ cookiecutter.project_slug }}.git",
)
{% endif %}
repo.git.add(".")


spr.check_call(["pre-commit", "install"])

# make a silent run first to fix the files
spr.call(["pre-commit", "run"], stdout=spr.DEVNULL)

# add the files again after pre-commit hook has been run
repo.git.add(".")

#spr.check_call(["pre-commit", "run"])

for dirpath, dirnames, filenames in os.walk("."):
    if "__pycache__" in dirnames:
        shutil.rmtree(os.path.join(dirpath, "__pycache__"))

print("""
===============================================================================
                          Contratulations!
===============================================================================
You just created a new helm chart for deployments in openshift.

{% if cookiecutter.use_reuse == "yes" -%}
+-------------------------------------------------------------+
| IMPORTANT NOTE:                                             |
|                                                             |
|    If you used cruft to create this package, please now run |
|    the following commands to stage the .cruft.json file and |
|    assign it the correct license:                           |
|                                                             |
+-------------------------------------------------------------+

1. Set the correct license information:

   $ reuse --root {{ cookiecutter.project_slug }} annotate --year {{ cookiecutter.copyright_year }} --license {{ cookiecutter.supplementary_files_license }} --copyright "{{ cookiecutter.copyright_holder }}" {{ cookiecutter.project_slug }}/.cruft.json

2. Stage the file:

   $ git -C {{ cookiecutter.project_slug }} add .cruft.json .cruft.json.license

3. Make your first commit via

   $ git -C {{ cookiecutter.project_slug }} commit -m "Initial commit"

4. Make sure that the repository at https://{{ cookiecutter.gitlab_host }}/{{ cookiecutter.gitlab_username }}/{{ cookiecutter.project_slug }}
   exists and bring your project on the web with

   $ git -C {{ cookiecutter.project_slug }} push -u origin main
{% else %}
+-------------------------------------------------------------+
| IMPORTANT NOTE:                                             |
|                                                             |
|    You can now push everything to gitlab!                   |
|                                                             |
+-------------------------------------------------------------+

1. Make your first commit via

   $ git -C {{ cookiecutter.project_slug }} commit -m "Initial commit"

2. Make sure that the repository at https://{{ cookiecutter.gitlab_host }}/{{ cookiecutter.gitlab_username }}/{{ cookiecutter.project_slug }}
   exists and bring your project on the web with

   $ git -C {{ cookiecutter.project_slug }} push -u origin main
{% endif -%}

Finally we recommend that you register this package at
https://codebase.helmholtz.cloud/hcdc/software-templates/template-overview
such that the maintainers of the template can support you with keeping your
skeleton up-to-date. You can do this by opening an issue with the following
URL:

https://codebase.helmholtz.cloud/hcdc/software-templates/template-overview/-/issues/new?issue%5Bconfidential%5D=true&issue%5Btitle%5D=New%20template%20usage%20for%20{{ cookiecutter.project_slug }}%20from%20{{ cookiecutter._template.split('/')[-1] }}&issue%5Bdescription%5D=Dear%20HCDC%20support%2C%20I%27d%20like%20to%20register%20the%20following%20repository%0A%0Ahttps%3A//{{ cookiecutter.gitlab_host }}/{{ cookiecutter.gitlab_username }}/{{ cookiecutter.project_slug }}.git%0A%0Athat%20is%20using%20the%20following%20template%0A%0A{{ cookiecutter._template.replace('https:', 'https%3A' )}}"
""")