forked from LNReader/lnreader-plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
154 lines (142 loc) · 6.81 KB
/
theme_auto_label.yml
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: Auto Theme Labeler
on:
issues:
types: [labeled]
jobs:
auto-label:
if: contains(github.event.issue.labels.*.name, 'Source Request')
runs-on: ubuntu-latest
env:
REPO: ${{ github.repository }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
steps:
- name: Get Source Request URL
id: get_url
env:
ISSUE_BODY: ${{ github.event.issue.body }}
run: |
URL=$(echo "$ISSUE_BODY" | sed -n '/### Source link/,+2p' | sed '1,2d' | tr -d '[:space:]')
echo "URL=$URL" >> $GITHUB_OUTPUT
echo "Using URL: \`$URL\`" >> $GITHUB_STEP_SUMMARY
- name: Get User Agent
id: get_user_agent
run: |
CHROME_VERSION=$(curl -s https://chromiumdash.appspot.com/fetch_releases?channel=Stable\&platform=Windows\&num=1 | jq -r '.[0].version // "126.0.6478.36"')
echo "USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/$CHROME_VERSION Safari/537.36" >> $GITHUB_OUTPUT
- name: Get Base URL
id: get_base_url
env:
URL: ${{ steps.get_url.outputs.URL }}
run: |
BASE_URL=$(echo "$URL" | sed 's/https\?:\/\///' | cut -d'/' -f1)
echo "BASE_URL=$BASE_URL" >> $GITHUB_OUTPUT
echo "Using Base URL: \`$BASE_URL\`" >> $GITHUB_STEP_SUMMARY
- name: Check if URL is Valid
id: url_check
env:
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
GH_TOKEN: ${{ github.token }}
OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
run: |
check_url() {
local protocol=$1
local url="${protocol}://${BASE_URL}"
if ! curl --output /dev/null --silent --head --fail "$url" -H "User-Agent: $USER_AGENT"; then
echo "❌ Error: Request Failed ($(curl --output /dev/null --silent --head --fail "$url" -H "User-Agent: $USER_AGENT" -w "%{http_code}"))" >> $GITHUB_STEP_SUMMARY
echo "URL is invalid or Cloudflare issue or site is down" >> $GITHUB_STEP_SUMMARY
curl -v "$url" -H "User-Agent: $USER_AGENT" > curl_output_${protocol}.txt 2>&1
curl "$url" -H "User-Agent: $USER_AGENT" > curl_output_${protocol}.html
return 1
fi
return 0
}
if [[ -z "$BASE_URL" ]]; then
echo "url_valid=false" >> $GITHUB_OUTPUT
echo "❌ Error: URL Not Found" >> $GITHUB_STEP_SUMMARY
exit 1
fi
if ! check_url "https" && check_url "http"; then
echo "url_valid=false" >> $GITHUB_OUTPUT
curl -v "$URL" -H "User-Agent: $USER_AGENT" > curl_output.txt 2>&1
curl "$URL" -H "User-Agent: $USER_AGENT" > curl_output.html
gh issue comment $ISSUE_NUMBER -b '
> [!WARNING]
> **Unable to Check for Themes**
> This issue may be due to Cloudflare protection on the website, an invalid URL, or the website being down.
*This message is for development purposes and can be ignored otherwise. [View GitHub Action](https://github.com/${{ env.OWNER }}/${{ env.REPO_NAME }}/actions/runs/${{ github.run_id }})*
' -R $REPO
exit 1
fi
echo "url_valid=true" >> $GITHUB_OUTPUT
- name: Upload curl output
if: failure()
env:
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
uses: actions/upload-artifact@v4
with:
name: curl-output-${{ env.BASE_URL }}
path: |
./curl_output_http.txt
./curl_output_https.txt
./curl_output_http.html
./curl_output_https.html
- name: Check Madara theme
if: steps.url_check.outputs.url_valid == 'true'
id: check_madara
env:
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
run: |
if curl --location --output /dev/null --silent --head --fail "https://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT"; then
echo "madara=true" >> $GITHUB_OUTPUT
echo "✅ Madara Theme Detected" >> $GITHUB_STEP_SUMMARY
elif curl --location --output /dev/null --silent --head --fail "http://$BASE_URL/wp-content/themes/madara/style.css" -H "User-Agent: $USER_AGENT"; then
echo "madara=true" >> $GITHUB_OUTPUT
echo "✅ Madara Theme Detected" >> $GITHUB_STEP_SUMMARY
else
echo "madara=false" >> $GITHUB_OUTPUT
fi
- name: Check Lighnovelwp theme
if: steps.url_check.outputs.url_valid == 'true'
id: check_lighnovelwp
env:
BASE_URL: ${{ steps.get_base_url.outputs.BASE_URL }}
USER_AGENT: ${{ steps.get_user_agent.outputs.USER_AGENT }}
run: |
if curl --location --output /dev/null --silent --head --fail "https://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT"; then
echo "lighnovelwp=true" >> $GITHUB_OUTPUT
echo "✅ Lighnovelwp Theme Detected" >> $GITHUB_STEP_SUMMARY
elif curl --location --output /dev/null --silent --head --fail "http://$BASE_URL/wp-content/themes/lightnovel/style.css" -H "User-Agent: $USER_AGENT"; then
echo "lighnovelwp=true" >> $GITHUB_OUTPUT
echo "✅ Lighnovelwp Theme Detected" >> $GITHUB_STEP_SUMMARY
else
echo "lighnovelwp=false" >> $GITHUB_OUTPUT
fi
- name: Check if the site has multiple themes
if: steps.url_check.outputs.url_valid == 'true'
id: check_multiple_themes
env:
MADARA: ${{ steps.check_madara.outputs.madara }}
LIGHNOVELWP: ${{ steps.check_lighnovelwp.outputs.lighnovelwp }}
run: |
if [[ "$MADARA" == "true" && "$LIGHNOVELWP" == "true" ]]; then
echo "multiple_themes=true" >> $GITHUB_OUTPUT
echo "❌ Error: Multiple Themes Detected on Site" >> $GITHUB_STEP_SUMMARY
exit 1
fi
echo "multiple_themes=false" >> $GITHUB_OUTPUT
- name: Add Label
if: steps.check_multiple_themes.outputs.multiple_themes == 'false'
env:
MADARA: ${{ steps.check_madara.outputs.madara }}
LIGHNOVELWP: ${{ steps.check_lighnovelwp.outputs.lighnovelwp }}
run: |
if [[ "$MADARA" == "true" ]]; then
gh issue edit $ISSUE_NUMBER --add-label "Theme: Madara" -R $REPO
elif [[ "$LIGHNOVELWP" == "true" ]]; then
gh issue edit $ISSUE_NUMBER --add-label "Theme: Lighnovelwp" -R $REPO
else
echo "No Theme Detected" >> $GITHUB_STEP_SUMMARY
fi