import os import re import sys from typing import Match import redbot from redbot._version import __version__ if int(os.environ.get("JUST_RETURN_VERSION", 0)): print(f"::set-output name=version::{__version__}") sys.exit(0) version_info = None def repl(match: Match[str]) -> str: global version_info print(f"::set-output name=old_version::{match.group('version')}") new_stable_version = os.environ.get("NEW_STABLE_VERSION", "auto") if new_stable_version == "auto": version_info = redbot.VersionInfo.from_str(match.group("version")) version_info.dev_release = None else: version_info = redbot.VersionInfo.from_str(new_stable_version) if int(os.environ.get("DEV_BUMP", 0)): version_info.micro += 1 version_info.dev_release = 1 return f'__version__ = "{version_info}"' with open("redbot/_version.py", encoding="utf-8") as fp: new_contents, found = re.subn( pattern=r'^__version__ = "(?P[^"]*)"$', repl=repl, string=fp.read(), count=1, flags=re.MULTILINE, ) if not found: print("Couldn't find `__version__` line!") sys.exit(1) with open("redbot/_version.py", "w", encoding="utf-8", newline="\n") as fp: fp.write(new_contents) print(f"::set-output name=new_version::{version_info}")