1
1
import re
2
2
from os import environ
3
3
4
- from github import Github , ContentFile
4
+ from github import Github
5
5
from github .GitRelease import GitRelease
6
6
7
7
GITHUB_REPOSITORY = environ .get ("GITHUB_REPOSITORY" , "awtkns/fastapi-crudrouter" )
8
8
GITHUB_TOKEN = environ .get ("GH_TOKEN" ) or environ .get ("GITHUB_TOKEN" )
9
9
GITHUB_URL = "https://github.com"
10
+ GITHUB_BRANCH = "master"
10
11
FILE_PATH = "docs/en/docs/releases.md"
11
12
COMMIT_MESSAGE = "🤖 auto update releases.md"
12
13
13
14
14
15
gh = Github (GITHUB_TOKEN )
15
16
16
17
17
- def generate_header (r : GitRelease , separator : bool = False ):
18
- header = ""
19
- if separator :
20
- header += "\n \n ---\n "
18
+ def generate_header (r : GitRelease , header_row : bool = False ):
19
+ if header_row :
20
+ header = "Release Notes\n ===\n "
21
+ else :
22
+ header = "\n \n ---\n "
21
23
22
24
return (
23
25
header
@@ -37,26 +39,36 @@ def commit_update(content: str):
37
39
else :
38
40
print ("Uploading new release documentation" )
39
41
40
- repo .update_file (file .path , message = COMMIT_MESSAGE , content = content , sha = file .sha )
42
+ repo .update_file (
43
+ file .path ,
44
+ message = COMMIT_MESSAGE ,
45
+ content = content ,
46
+ sha = file .sha ,
47
+ branch = GITHUB_BRANCH ,
48
+ )
41
49
42
50
43
51
def insert_links (content : str ):
44
52
"""Replaces both #pull and @author with correct links"""
45
- url = repo .html_url + "/pull"
46
- content = re .sub (r"#(\d+)" , rf"[#\1]({ url } /\1)" , content )
53
+ pull_url = repo .html_url + "/pull"
54
+ content = re .sub (r"#(\d+)" , rf"[#\1]({ pull_url } /\1)" , content )
55
+
56
+ compare_url = repo .html_url + "/compare"
57
+ content = re .sub (rf"{ compare_url } /([^\s]+)" , rf"[`\1`]({ compare_url } /\1)" , content )
58
+
47
59
return re .sub (r"@(\S+)" , rf"[@\1]({ GITHUB_URL } /\1)" , content )
48
60
49
61
50
62
if __name__ == "__main__" :
51
63
repo = gh .get_repo (GITHUB_REPOSITORY )
52
64
53
65
new_content = ""
54
- first = False
55
- for r in repo .get_releases ():
56
- if not r .draft :
57
- new_content += generate_header (r , first )
58
- new_content += r .body
59
- first = True
66
+ show_header = True
67
+ for release in repo .get_releases ():
68
+ if not release .draft :
69
+ new_content += generate_header (release , header_row = show_header )
70
+ new_content += release .body
71
+ show_header = False
60
72
61
73
new_content = insert_links (new_content )
62
74
commit_update (new_content )
0 commit comments