feat: Add rebrand CI/CD workflows to main branch
- Add 72 rebrand workflow files (polkadot→pezkuwi, substrate→bizinikiwi, cumulus→pezcumulus) - Add GitHub actions, issue templates, and configs - Removed unnecessary workflows (fork-sync, gitspiegel, upstream-tracker, sync-templates, backport) - Renamed zombienet test files to match new naming convention
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
from github import Github
|
||||
import re
|
||||
import os
|
||||
from datetime import date
|
||||
|
||||
g = Github(os.getenv("GH_TOKEN"))
|
||||
|
||||
# Regex pattern to match wish format:
|
||||
wish_pattern = re.compile(
|
||||
r"I wish for:? (https://github\.com/([a-zA-Z0-9_.-]+)/([a-zA-Z0-9_.-]+)/(issues|pull)/(\d+))"
|
||||
)
|
||||
|
||||
wishlist_issue = g.get_repo(os.getenv("WISHLIST_REPOSITORY")).get_issue(
|
||||
int(os.getenv("WISHLIST_ISSUE_NUMBER"))
|
||||
)
|
||||
new_leaderboard = (
|
||||
"| Feature Request | Summary | Votes | Status |\n| --- | --- | --- | --- |\n"
|
||||
)
|
||||
wishes = {}
|
||||
issue_details = {}
|
||||
|
||||
for comment in wishlist_issue.get_comments():
|
||||
# in the comment body, if there is a string `#(\d)`, replace it with
|
||||
# https://github.com/pezkuwichain/pezkuwi-sdk/issues/(number)
|
||||
updated_body = re.sub(
|
||||
r"#(\d+)", r"https://github.com/pezkuwichain/pezkuwi-sdk/issues/\1", comment.body
|
||||
)
|
||||
|
||||
matches = wish_pattern.findall(updated_body)
|
||||
for match in matches:
|
||||
url, org, repo_name, _, issue_id = match
|
||||
issue_key = (url, org, repo_name, issue_id)
|
||||
if issue_key not in wishes:
|
||||
wishes[issue_key] = []
|
||||
|
||||
# Get the author and upvoters of the wish comment.
|
||||
wishes[issue_key].append(comment.user.id)
|
||||
wishes[issue_key].extend(
|
||||
[
|
||||
reaction.user.id
|
||||
for reaction in comment.get_reactions()
|
||||
if reaction.content in ["+1", "heart", "rocket"]
|
||||
]
|
||||
)
|
||||
|
||||
# Get upvoters of the desired issue.
|
||||
desired_issue = g.get_repo(f"{org}/{repo_name}").get_issue(int(issue_id))
|
||||
wishes[issue_key].extend(
|
||||
[
|
||||
reaction.user.id
|
||||
for reaction in desired_issue.get_reactions()
|
||||
if reaction.content in ["+1", "heart", "rocket"]
|
||||
]
|
||||
)
|
||||
issue_details[url] = [
|
||||
desired_issue.title,
|
||||
"👾 Open" if desired_issue.state == "open" else "✅Closed",
|
||||
]
|
||||
|
||||
# Count unique wishes - the author of the wish, upvoters of the wish, and upvoters of the desired issue.
|
||||
for key in wishes:
|
||||
wishes[key] = len(list(set(wishes[key])))
|
||||
|
||||
# Sort wishes by count and add to the markdown table
|
||||
sorted_wishes = sorted(wishes.items(), key=lambda x: x[1], reverse=True)
|
||||
for (url, _, _, _), count in sorted_wishes:
|
||||
[summary, status] = issue_details.get(url, "No summary available")
|
||||
new_leaderboard += f"| {url} | {summary} | {count} | {status} |\n"
|
||||
new_leaderboard += f"\n> Last updated: {date.today().strftime('%Y-%m-%d')}\n"
|
||||
print(new_leaderboard)
|
||||
|
||||
new_content = re.sub(
|
||||
r"(\| Feature Request \|)(.*?)(> Last updated:)(.*?\n)",
|
||||
new_leaderboard,
|
||||
wishlist_issue.body,
|
||||
flags=re.DOTALL,
|
||||
)
|
||||
|
||||
wishlist_issue.edit(body=new_content)
|
||||
Reference in New Issue
Block a user