mirror of
				https://github.com/cookiecutter/cookiecutter-django.git
				synced 2025-11-04 01:47:28 +03:00 
			
		
		
		
	Update node version in production docker file
This commit is contained in:
		
							parent
							
								
									f79dbf9e17
								
							
						
					
					
						commit
						08cf6f72e5
					
				| 
						 | 
				
			
			@ -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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user