diff --git a/build_release.py b/build_release.py new file mode 100644 index 0000000..25277aa --- /dev/null +++ b/build_release.py @@ -0,0 +1,64 @@ +import os +import shutil +import re +import subprocess +import sys + +def build_release(): + print("Starting Production Build...") + + # 1. Backup local README + if os.path.exists("README.md"): + shutil.copy2("README.md", "README.md.bak") + print("Backed up README.md") + + try: + # 2. Prepare PyPI README + with open("README.md", "r", encoding="utf-8") as f: + content = f.read() + + # Base URL for assets + base_url = "https://github.com/oop7/YTSage/raw/main/branding/" + + # Function to fix paths matches by regex + def path_fixer(match): + full_match = match.group(0) + # Convert backslashes to forward slashes for URL compatibility + fixed = full_match.replace("\\", "/") + # Prepend the absolute URL + return fixed.replace("branding/", base_url) + + # Regex: matches "branding" followed by backslash or slash, then characters until quote, closing paren, or space + # This captures paths like: branding\screenshots\main.png + pattern = r"branding[\\/][^\"')\s]+" + new_content = re.sub(pattern, path_fixer, content) + + with open("README.md", "w", encoding="utf-8") as f: + f.write(new_content) + + print("Modified README.md for PyPI (Absolute URLs)") + + # 3. Clean previous builds + for folder in ["dist", "build", "ytsage.egg-info"]: + if os.path.exists(folder): + shutil.rmtree(folder) + + # 4. Run Build + print("Building Wheel...") + subprocess.check_call([sys.executable, "-m", "build"]) + + except Exception as e: + print(f"Error during build: {e}") + sys.exit(1) + + finally: + # 5. Restore README + if os.path.exists("README.md.bak"): + # Force move back, overwriting the modified one + shutil.move("README.md.bak", "README.md") + print("Restored original README.md") + + print("Build Complete. Artifacts are in the /dist folder.") + +if __name__ == "__main__": + build_release()