FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlmodel/scripts/deploy_docs_status.py at main · fastapi/sqlmodel · GitHub
fastapi
sqlmodel
Repository navigation
Code
Issues
1
(1)
Pull requests
53
(53)
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlmodel
/
scripts
/
deploy_docs_status.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
127 lines (110 loc) · 3.7 KB
Breadcrumbs
sqlmodel
/
scripts
/
deploy_docs_status.py
Copy path
File metadata and controls
127 lines (110 loc) · 3.7 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import
logging
import
re
from
typing
import
Literal
from
github
import
Auth
,
Github
from
pydantic
import
BaseModel
,
SecretStr
from
pydantic_settings
import
BaseSettings
site_domain
=
"sqlmodel.tiangolo.com"
class
Settings
(
BaseSettings
):
github_repository
:
str
github_token
:
SecretStr
deploy_url
:
str
|
None
=
None
commit_sha
:
str
run_id
:
int
state
:
Literal
[
"pending"
,
"success"
,
"error"
]
=
"pending"
class
LinkData
(
BaseModel
):
previous_link
:
str
preview_link
:
str
def
main
()
->
None
:
logging
.
basicConfig
(
level
=
logging
.
INFO
)
settings
=
Settings
()
logging
.
info
(
f"Using config:
{
settings
.
model_dump_json
()
}
"
)
g
=
Github
(
auth
=
Auth
.
Token
(
settings
.
github_token
.
get_secret_value
()))
repo
=
g
.
get_repo
(
settings
.
github_repository
)
use_pr
=
next
(
(
pr
for
pr
in
repo
.
get_pulls
()
if
pr
.
head
.
sha
==
settings
.
commit_sha
),
None
)
if
not
use_pr
:
logging
.
error
(
f"No PR found for hash:
{
settings
.
commit_sha
}
"
)
return
commits
=
list
(
use_pr
.
get_commits
())
current_commit
=
[
c
for
c
in
commits
if
c
.
sha
==
settings
.
commit_sha
][
0
]
run_url
=
f"https://github.com/
{
settings
.
github_repository
}
/actions/runs/
{
settings
.
run_id
}
"
if
settings
.
state
==
"pending"
:
current_commit
.
create_status
(
state
=
"pending"
,
description
=
"Deploying Docs"
,
context
=
"deploy-docs"
,
target_url
=
run_url
,
)
logging
.
info
(
"No deploy URL available yet"
)
return
if
settings
.
state
==
"error"
:
current_commit
.
create_status
(
state
=
"error"
,
description
=
"Error Deploying Docs"
,
context
=
"deploy-docs"
,
target_url
=
run_url
,
)
logging
.
info
(
"Error deploying docs"
)
return
assert
settings
.
state
==
"success"
if
not
settings
.
deploy_url
:
current_commit
.
create_status
(
state
=
"success"
,
description
=
"No Docs Changes"
,
context
=
"deploy-docs"
,
target_url
=
run_url
,
)
logging
.
info
(
"No docs changes found"
)
return
assert
settings
.
deploy_url
current_commit
.
create_status
(
state
=
"success"
,
description
=
"Docs Deployed"
,
context
=
"deploy-docs"
,
target_url
=
run_url
,
)
files
=
list
(
use_pr
.
get_files
())
docs_files
=
[
f
for
f
in
files
if
f
.
filename
.
startswith
(
"docs/"
)]
deploy_url
=
settings
.
deploy_url
.
rstrip
(
"/"
)
links
:
list
[
LinkData
]
=
[]
for
f
in
docs_files
:
match
=
re
.
match
(
r"docs/(.*)"
,
f
.
filename
)
if
not
match
:
continue
path
=
match
.
group
(
1
)
if
path
.
endswith
(
"index.md"
):
use_path
=
path
.
replace
(
"index.md"
,
""
)
else
:
use_path
=
path
.
replace
(
".md"
,
"/"
)
link
=
LinkData
(
previous_link
=
f"https://
{
site_domain
}
/
{
use_path
}
"
,
preview_link
=
f"
{
deploy_url
}
/
{
use_path
}
"
,
)
links
.
append
(
link
)
links
.
sort
(
key
=
lambda
x
:
x
.
preview_link
)
header
=
"## 📝 Docs preview"
message
=
header
message
+=
f"
\n
\n
Last commit
{
settings
.
commit_sha
}
at:
{
deploy_url
}
"
if
links
:
message
+=
"
\n
\n
### Modified Pages
\n
\n
"
for
link
in
links
:
message
+=
f"*
{
link
.
preview_link
}
"
message
+=
f" - ([before](
{
link
.
previous_link
}
))"
message
+=
"
\n
"
print
(
message
)
issue
=
use_pr
.
as_issue
()
comments
=
list
(
issue
.
get_comments
())
for
comment
in
comments
:
if
(
comment
.
body
.
startswith
(
header
)
and
comment
.
user
.
login
==
"github-actions[bot]"
):
comment
.
edit
(
message
)
break
else
:
issue
.
create_comment
(
message
)
logging
.
info
(
"Finished"
)
if
__name__
==
"__main__"
:
main
()
Back
|
FazBrowse Home
|
New Git URL