diff --git a/scripts/node_version.py b/scripts/node_version.py index 6264f8ee6..5455428a3 100644 --- a/scripts/node_version.py +++ b/scripts/node_version.py @@ -4,19 +4,23 @@ from pathlib import Path ROOT = Path(__file__).parent.parent TEMPLATED_ROOT = ROOT / "{{cookiecutter.project_slug}}" DOCKERFILE = TEMPLATED_ROOT / "compose" / "local" / "node" / "Dockerfile" +PROD_DOCKERFILE = TEMPLATED_ROOT / "compose" / "production" / "django" / "Dockerfile" PACKAGE_JSON = TEMPLATED_ROOT / "package.json" CI_YML = ROOT / ".github" / "workflows" / "ci.yml" -def main(): +def main() -> None: new_version = get_version_from_dockerfile() + if new_version is None: + raise RuntimeError(f"No version found in {DOCKERFILE}") + old_version = get_version_from_package_json() if old_version != new_version: update_package_json_version(old_version, new_version) update_ci_node_version(old_version, new_version) -def get_version_from_dockerfile(): +def get_version_from_dockerfile() -> str | None: # Extract version out of base image name: # FROM docker.io/node:22.13-bookworm-slim # -> 22.13 @@ -28,12 +32,12 @@ def get_version_from_dockerfile(): return version_str -def get_version_from_package_json(): +def get_version_from_package_json() -> str: package_json = json.loads(PACKAGE_JSON.read_text()) return package_json["engines"]["node"] -def update_package_json_version(old_version, new_version): +def update_package_json_version(old_version: str, new_version: str) -> None: package_json_text = PACKAGE_JSON.read_text() package_json_text = package_json_text.replace( f'"node": "{old_version}"', @@ -42,7 +46,7 @@ def update_package_json_version(old_version, new_version): PACKAGE_JSON.write_text(package_json_text) -def update_ci_node_version(old_version, new_version): +def update_ci_node_version(old_version: str, new_version: str) -> None: yml_content = CI_YML.read_text() yml_content = yml_content.replace( f'node-version: "{old_version}"', @@ -50,6 +54,14 @@ def update_ci_node_version(old_version, new_version): ) CI_YML.write_text(yml_content) +def update_production_node_version(old_version: str, new_version: str) -> None: + dockerfile_content = PROD_DOCKERFILE.read_text() + dockerfile_content = dockerfile_content.replace( + f'FROM docker.io/node:{old_version}', + f'FROM docker.io/node:{new_version}', + ) + PROD_DOCKERFILE.write_text(dockerfile_content) + if __name__ == "__main__": main() diff --git a/{{cookiecutter.project_slug}}/requirements/base.txt b/{{cookiecutter.project_slug}}/requirements/base.txt index 64ed2cf9f..8bf3eb2eb 100644 --- a/{{cookiecutter.project_slug}}/requirements/base.txt +++ b/{{cookiecutter.project_slug}}/requirements/base.txt @@ -9,7 +9,7 @@ rcssmin==1.1.2 # https://github.com/ndparker/rcssmin {%- endif %} argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi {%- if cookiecutter.use_whitenoise == 'y' %} -whitenoise==6.8.2 # https://github.com/evansd/whitenoise +whitenoise==6.9.0 # https://github.com/evansd/whitenoise {%- endif %} redis==5.2.1 # https://github.com/redis/redis-py {%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %} @@ -42,7 +42,7 @@ django-redis==5.4.0 # https://github.com/jazzband/django-redis {%- if cookiecutter.use_drf == 'y' %} # Django REST Framework djangorestframework==3.15.2 # https://github.com/encode/django-rest-framework -django-cors-headers==4.6.0 # https://github.com/adamchainz/django-cors-headers +django-cors-headers==4.7.0 # https://github.com/adamchainz/django-cors-headers # DRF-spectacular for api documentation drf-spectacular==0.28.0 # https://github.com/tfranzel/drf-spectacular {%- endif %}