From 25ae54f6bfa0d3f36fb9e04ef8b3be38ea1bdd5a Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Sat, 17 Jun 2023 07:20:02 -0700 Subject: [PATCH] aider: Updated versionbump.py script to handle version bumping, git commit, tag, and push. # Context: USER: write a dcript that takes x.y.z semver on the cmd line. it should: 1. verify that the version is greater than `__version__` 2. wupdate the `__version__` in init.py 3. git commit that change with msg `version bump to x.y.z` 4. git tag that new commit with "vx.y.z" (note the leading v) 5. git push to origin 6. git push the new tag to origin ASSISTANT: I will create a new script called `scripts/versionbump.py` to handle the version bumping process. Here are the changes: ```python scripts/versionbump.py <<<<<<< ORIGINAL ======= import argparse import os import re import subprocess from packaging import version def main(): parser = argparse.ArgumentParser(description="Bump version") parser.add_argument("new_version", help="New version in x.y.z format") args = parser.parse_args() new_version = version.parse(args.new_version) if not isinstance(new_version, version.Version): raise ValueError("Invalid version format") with open("aider/__init__.py", "r") as f: content = f.read() current_version = re.search(r'__version__ = "(.+?)"', content).group(1) if new_version <= version.parse(current_version): raise ValueError("New version must be greater than the current version") updated_content = re.sub(r'__version__ = ".+?"', f'__version__ = "{new_version}"', content) with open("aider/__init__.py", "w") as f: f.write(updated_content) subprocess.run(["git", "add", "aider/__init__.py"]) subprocess.run(["git", "commit", "-m", f"version bump to {new_version}"]) subprocess.run(["git", "tag", f"v{new_version}"]) subprocess.run(["git", "push", "origin"]) subprocess.run(["git", "push", "origin", f"v{new_version}"]) if __name__ == "__main__": main() >>>>>>> UPDATED ``` This script will perform the requested actions. Make sure to install the `packaging` library if you haven't already: ```bash pip install packaging ``` You can run the script with the new version as an argument: ```bash python scripts/versionbump.py x.y.z ``` --- scripts/versionbump.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/scripts/versionbump.py b/scripts/versionbump.py index e69de29bb..ff2772114 100644 --- a/scripts/versionbump.py +++ b/scripts/versionbump.py @@ -0,0 +1,35 @@ +import argparse +import os +import re +import subprocess +from packaging import version + +def main(): + parser = argparse.ArgumentParser(description="Bump version") + parser.add_argument("new_version", help="New version in x.y.z format") + args = parser.parse_args() + + new_version = version.parse(args.new_version) + if not isinstance(new_version, version.Version): + raise ValueError("Invalid version format") + + with open("aider/__init__.py", "r") as f: + content = f.read() + + current_version = re.search(r'__version__ = "(.+?)"', content).group(1) + if new_version <= version.parse(current_version): + raise ValueError("New version must be greater than the current version") + + updated_content = re.sub(r'__version__ = ".+?"', f'__version__ = "{new_version}"', content) + + with open("aider/__init__.py", "w") as f: + f.write(updated_content) + + subprocess.run(["git", "add", "aider/__init__.py"]) + subprocess.run(["git", "commit", "-m", f"version bump to {new_version}"]) + subprocess.run(["git", "tag", f"v{new_version}"]) + subprocess.run(["git", "push", "origin"]) + subprocess.run(["git", "push", "origin", f"v{new_version}"]) + +if __name__ == "__main__": + main()