feat(workflow): Added workflow to update the issue title automatically (#153)
* feat(workflow): Added a workflow to automatically update the issue title so that it contains the plugin name * improves matching --------- Co-authored-by: Lemmy <studio@quadbyte.net>
This commit is contained in:
co-authored by
Lemmy
parent
ba12f4c131
commit
3e10abccb9
@@ -0,0 +1,62 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
from github import Auth, Github
|
||||
|
||||
token = os.environ["GITHUB_TOKEN"]
|
||||
repo_name = os.environ["REPOSITORY"]
|
||||
issue_number = os.environ["ISSUE_NUMBER"]
|
||||
|
||||
auth = Auth.Token(token)
|
||||
gh = Github(auth=auth)
|
||||
repo = gh.get_repo(repo_name)
|
||||
|
||||
if issue_number.isdigit():
|
||||
issue_number = int(issue_number)
|
||||
else:
|
||||
print("Issue number is not numeric!")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
issue = repo.get_issue(issue_number)
|
||||
body = issue.body
|
||||
lines = body.splitlines()
|
||||
|
||||
try:
|
||||
title_index = lines.index("### Plugin")
|
||||
except ValueError:
|
||||
print("No Plugin title found!")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
for i in range(title_index + 1, len(lines)):
|
||||
if lines[i]:
|
||||
break
|
||||
|
||||
plugin = lines[i].strip()
|
||||
plugin_split = plugin.split('/')
|
||||
|
||||
# The Plugin field is free text, so accept both the canonical "<author>/<plugin>" id and
|
||||
# a bare plugin name, and skip quietly on anything else instead of failing the run.
|
||||
if len(plugin_split) == 2:
|
||||
plugin_name = plugin_split[1].strip()
|
||||
elif len(plugin_split) == 1:
|
||||
plugin_name = plugin_split[0]
|
||||
else:
|
||||
print(f"Unknown format of plugin name, got {plugin}")
|
||||
sys.exit(0)
|
||||
|
||||
if not plugin_name:
|
||||
print("No plugin name given!")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
title = issue.title
|
||||
|
||||
if title.startswith(f"[{plugin_name}]"):
|
||||
print("Plugin name already exists in the title of the issue.")
|
||||
sys.exit(0)
|
||||
|
||||
new_title = f"[{plugin_name}]{title}"
|
||||
|
||||
issue.edit(title=new_title)
|
||||
@@ -0,0 +1,33 @@
|
||||
name: Update title of issue to represent the plugin
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
update-issue-title:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'noctalia-dev/community-plugins'
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: '3.14'
|
||||
cache: 'pip'
|
||||
cache-dependency-path: |
|
||||
.github/workflows/notify-plugin-authors-requirements.txt
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip install -r .github/workflows/notify-plugin-authors-requirements.txt
|
||||
|
||||
- name: Update Issue Title
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||
run: python3 .github/workflows/issues-update-title.py
|
||||
|
||||
Reference in New Issue
Block a user