mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-03-31 15:04:14 +03:00
Add script to automatically keep node version up-to-date
This commit is contained in:
parent
cee86b68b1
commit
bb7bffec63
55
scripts/node_version.py
Normal file
55
scripts/node_version.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
import json
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).parent.parent
|
||||
TEMPLATED_ROOT = ROOT / "{{cookiecutter.project_slug}}"
|
||||
DOCKERFILE = TEMPLATED_ROOT / "compose" / "local" / "node" / "Dockerfile"
|
||||
PACKAGE_JSON = TEMPLATED_ROOT / "package.json"
|
||||
CI_YML = ROOT / ".github" / "workflows" / "ci.yml"
|
||||
|
||||
|
||||
def main():
|
||||
new_version = get_version_from_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():
|
||||
# Extract version out of base image name:
|
||||
# FROM docker.io/node:22.13-bookworm-slim
|
||||
# -> 22.13
|
||||
with DOCKERFILE.open("r") as f:
|
||||
for line in f:
|
||||
if "FROM docker.io/node:" in line:
|
||||
_, _, docker_tag = line.partition(":")
|
||||
version_str, _, _ = docker_tag.partition("-")
|
||||
return version_str
|
||||
|
||||
|
||||
def get_version_from_package_json():
|
||||
package_json = json.loads(PACKAGE_JSON.read_text())
|
||||
return package_json["engines"]["node"]
|
||||
|
||||
|
||||
def update_package_json_version(old_version, new_version):
|
||||
package_json_text = PACKAGE_JSON.read_text()
|
||||
package_json_text = package_json_text.replace(
|
||||
f'"node": "{old_version}"',
|
||||
f'"node": "{new_version}"',
|
||||
)
|
||||
PACKAGE_JSON.write_text(package_json_text)
|
||||
|
||||
|
||||
def update_ci_node_version(old_version, new_version):
|
||||
yml_content = CI_YML.read_text()
|
||||
yml_content = yml_content.replace(
|
||||
f'node-version: "{old_version}"',
|
||||
f'node-version: "{new_version}"',
|
||||
)
|
||||
CI_YML.write_text(yml_content)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user