Skip to content

Commit

Permalink
Merge branch 'feature/canary-py' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
voluntas committed Oct 13, 2024
2 parents fd32618 + 4721c56 commit 37e42c5
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions canary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
import argparse
import re
import subprocess

VERSION_FILE = "VERSION"
EXAMPLES_VERSION_FILE = "examples/VERSION"


def update_version(version_content):
updated_content = []
sora_version_updated = False
new_version = None

for line in version_content:
if line.startswith("SORA_CPP_SDK_VERSION="):
version_match = re.match(
r"SORA_CPP_SDK_VERSION=(\d{4}\.\d+\.\d+)(-canary\.(\d+))?", line
)
if version_match:
major_minor_patch = version_match.group(1)
canary_suffix = version_match.group(2)
if canary_suffix is None:
new_version = f"{major_minor_patch}-canary.0"
else:
canary_number = int(version_match.group(3))
new_version = f"{major_minor_patch}-canary.{canary_number + 1}"

updated_content.append(f"SORA_CPP_SDK_VERSION={new_version}")
sora_version_updated = True
else:
updated_content.append(line)
else:
updated_content.append(line)

if not sora_version_updated:
raise ValueError("SORA_CPP_SDK_VERSION not found in VERSION file.")

return updated_content, new_version


def write_version_file(filename, updated_content, dry_run):
if dry_run:
print(f"Dry run: The following changes would be written to {filename}:")
for line in updated_content:
print(line.strip())
else:
with open(filename, "w") as file:
file.write("\n".join(updated_content) + "\n")
print(f"{filename} updated.")


def git_operations(new_version, dry_run):
if dry_run:
print("Dry run: Would execute git commit -am 'Update VERSION and examples/VERSION'")
print(f"Dry run: Would execute git tag {new_version}")
print("Dry run: Would execute git push")
print(f"Dry run: Would execute git push origin {new_version}")
else:
print("Executing: git commit -am 'Update VERSION and examples/VERSION'")
subprocess.run(["git", "commit", "-am", "Update VERSION and examples/VERSION"], check=True)

print(f"Executing: git tag {new_version}")
subprocess.run(["git", "tag", new_version], check=True)

print("Executing: git push")
subprocess.run(["git", "push"], check=True)

print(f"Executing: git push origin {new_version}")
subprocess.run(["git", "push", "origin", new_version], check=True)


def main():
parser = argparse.ArgumentParser(
description="Update VERSION and examples/VERSION file and push changes with git."
)
parser.add_argument(
"--dry-run", action="store_true", help="Perform a dry run without making any changes."
)
args = parser.parse_args()

# Read the VERSION file
with open(VERSION_FILE, "r") as file:
version_content = file.readlines()

# Update the VERSION content
updated_content, new_version = update_version(version_content)

# Write updated content back to VERSION file
write_version_file(VERSION_FILE, updated_content, args.dry_run)

# Also update examples/VERSION
write_version_file(EXAMPLES_VERSION_FILE, updated_content, args.dry_run)

# Perform git operations
git_operations(new_version, args.dry_run)


if __name__ == "__main__":
main()

0 comments on commit 37e42c5

Please sign in to comment.