mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-02-03 13:14:28 +03:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
|
import subprocess
|
||
|
import tomllib
|
||
|
from pathlib import Path
|
||
|
|
||
|
ROOT = Path(__file__).parent.parent
|
||
|
TEMPLATED_ROOT = ROOT / "{{cookiecutter.project_slug}}"
|
||
|
REQUIREMENTS_LOCAL_TXT = TEMPLATED_ROOT / "requirements" / "local.txt"
|
||
|
PRE_COMMIT_CONFIG = TEMPLATED_ROOT / ".pre-commit-config.yaml"
|
||
|
PYPROJECT_TOML = ROOT / "pyproject.toml"
|
||
|
|
||
|
|
||
|
def main():
|
||
|
new_version = get_requirements_txt_version()
|
||
|
old_version = get_pyproject_toml_version()
|
||
|
if old_version == new_version:
|
||
|
return
|
||
|
|
||
|
update_ruff_version(old_version, new_version)
|
||
|
subprocess.run(["uv", "lock", "--no-upgrade"], cwd=ROOT)
|
||
|
|
||
|
|
||
|
def get_requirements_txt_version():
|
||
|
content = REQUIREMENTS_LOCAL_TXT.read_text()
|
||
|
for line in content.split("\n"):
|
||
|
if line.startswith("ruff"):
|
||
|
return line.split(" ")[0].split("==")[1]
|
||
|
return None
|
||
|
|
||
|
|
||
|
def get_pyproject_toml_version():
|
||
|
data = tomllib.loads(PYPROJECT_TOML.read_text())
|
||
|
for dependency in data["project"]["dependencies"]:
|
||
|
if dependency.startswith("ruff=="):
|
||
|
return dependency.split("==")[1]
|
||
|
|
||
|
|
||
|
def update_ruff_version(old_version, new_version):
|
||
|
# Update pyproject.toml
|
||
|
new_content = PYPROJECT_TOML.read_text().replace(
|
||
|
f"ruff=={old_version}",
|
||
|
f"ruff=={new_version}",
|
||
|
)
|
||
|
PYPROJECT_TOML.write_text(new_content)
|
||
|
# Update pre-commit config
|
||
|
new_content = PRE_COMMIT_CONFIG.read_text().replace(
|
||
|
f"repo: https://github.com/astral-sh/ruff-pre-commit\n rev: v{old_version}",
|
||
|
f"repo: https://github.com/astral-sh/ruff-pre-commit\n rev: v{new_version}",
|
||
|
)
|
||
|
PRE_COMMIT_CONFIG.write_text(new_content)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|