Skip to content

Commit 0315a26

Browse files
committed
2 parents afb342c + ef0ba9a commit 0315a26

27 files changed

+719
-272
lines changed

.github/workflows/deploy_prerelease.yml

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ env:
55
CURR_VER: 0.0.0.0
66
SUPPORTED: " for MC 1.19.* & 1.20.* & 1.21.*"
77
jobs:
8-
deploy_prerelease:
8+
build_towny_and_publish_prerelease:
99
runs-on: ubuntu-latest
10+
1011
strategy:
1112
matrix:
1213
java: ['21']
13-
name: Deploying Towny Prerelease
14+
name: Build Towny and Publish Pre-Release
1415
steps:
1516
- name: checkout repo content
1617
uses: actions/checkout@v3 # checkout the repository content to github runner.
@@ -25,21 +26,18 @@ jobs:
2526
env:
2627
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2728
run: mvn -B clean package -DskipTests=false
28-
- name: setup PHP
29-
uses: shivammathur/setup-php@v2
30-
with:
31-
php-version: '8.2'
32-
- name: get sponsors.txt using PHP
33-
run: php ./.github/workflows/prerelease/get_sponsors.php
34-
- name: create staging dir
35-
run: mkdir staging && cp sponsors.txt staging
29+
3630
- name: setup python
3731
uses: actions/setup-python@v3
3832
with:
3933
python-version: 3.8 #install the python needed
34+
- name: create sponsors.txt
35+
run: python ./.github/workflows/prerelease/get_sponsors.py
36+
- name: create staging dir
37+
run: mkdir staging && cp sponsors.txt staging
4038
- name: execute sponsortable.py
4139
run: python ./.github/workflows/prerelease/sponsortable.py
42-
- name: execute preRelease.py
40+
- name: execute prerelease.py
4341
id: prerelease_py
4442
run: python ./.github/workflows/prerelease/prerelease.py
4543
- name: create pre-release
@@ -54,24 +52,3 @@ jobs:
5452
./Towny/target/towny-${{ env.CURR_VER }}.jar
5553
env:
5654
GITHUB_REPOSITORY: my_gh_org/my_gh_repo
57-
- name: prepare maven settings.xml
58-
uses: s4u/maven-settings-action@v2.8.0
59-
with:
60-
githubServer: false
61-
servers: |
62-
[{
63-
"id": "nexus",
64-
"username": "${{ secrets.GLAREREPO_USERNAME }}",
65-
"password": "${{ secrets.GLAREREPO_PASSWORD }}"
66-
}]
67-
- name: deploy to glaremaster repo
68-
run: mvn deploy
69-
- name: deploy javadoc to github pages
70-
uses: MathieuSoysal/Javadoc-publisher.yml@v2.5.0
71-
with:
72-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
73-
javadoc-branch: javadoc
74-
java-version: 21
75-
target-folder: javadoc/prerelease
76-
javadoc-source-folder: target/reports/apidocs
77-
project: maven

.github/workflows/prerelease/get_sponsors.php

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
from urllib.request import Request, urlopen
2+
from html.parser import HTMLParser
3+
4+
FILE_NAME = "sponsors.txt"
5+
BASE_URL = "https://github.com/sponsors/LlmDl/sponsors_partial?filter=active&page={page}"
6+
7+
8+
class SponsorsParser(HTMLParser):
9+
def __init__(self):
10+
super().__init__()
11+
self.results = []
12+
13+
self.in_block = False
14+
self.block_depth = 0
15+
16+
self.block_public_user = None
17+
self.block_is_private = False
18+
19+
self.capture_tooltip = False
20+
self.tooltip_text = []
21+
22+
def handle_starttag(self, tag, attrs):
23+
attrs = dict(attrs)
24+
class_attr = attrs.get("class", "")
25+
26+
if tag == "div" and "d-flex" in class_attr and "mb-1" in class_attr and "mr-1" in class_attr:
27+
self.in_block = True
28+
self.block_depth = 1
29+
self.block_public_user = None
30+
self.block_is_private = False
31+
self.capture_tooltip = False
32+
self.tooltip_text = []
33+
return
34+
35+
if not self.in_block:
36+
return
37+
38+
if tag == "div":
39+
self.block_depth += 1
40+
return
41+
42+
if tag == "a":
43+
href = attrs.get("href", "").strip()
44+
45+
if href.startswith("/") and not href.startswith("//"):
46+
username = href.lstrip("/").strip()
47+
if username:
48+
self.block_public_user = username
49+
return
50+
51+
if tag == "svg":
52+
if attrs.get("aria-label") == "Private Sponsor":
53+
self.block_is_private = True
54+
return
55+
56+
if tag == "tool-tip":
57+
self.capture_tooltip = True
58+
self.tooltip_text = []
59+
return
60+
61+
def handle_data(self, data):
62+
if self.capture_tooltip:
63+
self.tooltip_text.append(data)
64+
65+
def handle_endtag(self, tag):
66+
if not self.in_block:
67+
return
68+
69+
if tag == "tool-tip":
70+
text = "".join(self.tooltip_text).strip()
71+
if text == "Private Sponsor":
72+
self.block_is_private = True
73+
self.capture_tooltip = False
74+
self.tooltip_text = []
75+
return
76+
77+
if tag == "div":
78+
self.block_depth -= 1
79+
80+
if self.block_depth == 0:
81+
if self.block_public_user:
82+
self.results.append(self.block_public_user)
83+
elif self.block_is_private:
84+
self.results.append("*privateSponsor")
85+
86+
self.in_block = False
87+
self.block_public_user = None
88+
self.block_is_private = False
89+
self.capture_tooltip = False
90+
self.tooltip_text = []
91+
92+
93+
def fetch_html(url):
94+
req = Request(url, headers={"User-Agent": "Mozilla/5.0"})
95+
with urlopen(req, timeout=30) as response:
96+
return response.read().decode("utf-8", errors="ignore")
97+
98+
99+
def main():
100+
public_sponsors = []
101+
private_sponsors = []
102+
page = 1
103+
104+
while True:
105+
url = BASE_URL.format(page=page)
106+
107+
try:
108+
html = fetch_html(url)
109+
except Exception:
110+
break
111+
112+
if not html.strip():
113+
break
114+
115+
parser = SponsorsParser()
116+
parser.feed(html)
117+
118+
if not parser.results:
119+
break
120+
121+
for sponsor in parser.results:
122+
if sponsor == "*privateSponsor":
123+
private_sponsors.append(sponsor)
124+
else:
125+
public_sponsors.append(sponsor)
126+
127+
page += 1
128+
129+
sponsors = public_sponsors + private_sponsors
130+
131+
with open(FILE_NAME, "w", encoding="utf-8") as f:
132+
f.write("\n".join(sponsors))
133+
if sponsors:
134+
f.write("\n")
135+
136+
print(f"Public sponsors: {len(public_sponsors)}")
137+
print(f"Private sponsors: {len(private_sponsors)}")
138+
print(f"Total lines: {len(sponsors)}")
139+
print(f"Wrote {FILE_NAME}")
140+
141+
142+
if __name__ == "__main__":
143+
main()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Publish Javadoc on Prerelease
2+
3+
on:
4+
workflow_run:
5+
workflows: ["Deploy Pre-release"]
6+
types:
7+
- completed
8+
workflow_dispatch:
9+
10+
jobs:
11+
publish:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Deploy JavaDoc 🚀
15+
uses: MathieuSoysal/Javadoc-publisher.yml@v2.5.0
16+
with:
17+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18+
javadoc-branch: javadoc
19+
java-version: 21
20+
target-folder: javadoc/prerelease
21+
javadoc-source-folder: target/reports/apidocs
22+
project: maven

.github/workflows/publish_to_glare_repo.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ name: Publish to Glare Repo
22

33
on:
44
workflow_dispatch:
5+
workflow_run:
6+
workflows: ["Deploy Pre-release"]
7+
types:
8+
- completed
59

610
jobs:
711
deploy_to_glare_repo:
@@ -20,7 +24,7 @@ jobs:
2024
java-version: ${{ matrix.java }}
2125
java-package: jdk
2226
cache: 'maven'
23-
- name: maven-settings-action
27+
- name: prepare maven settings.xml
2428
uses: s4u/maven-settings-action@v2.8.0
2529
with:
2630
githubServer: false
@@ -30,5 +34,5 @@ jobs:
3034
"username": "${{ secrets.GLAREREPO_USERNAME }}",
3135
"password": "${{ secrets.GLAREREPO_PASSWORD }}"
3236
}]
33-
34-
- run: mvn deploy
37+
- name: deploy to glaremaster
38+
run: mvn deploy

Towny/pom.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<artifactId>towny</artifactId>
1515
<packaging>jar</packaging>
16-
<version>0.102.0.11</version>
16+
<version>0.102.0.12</version>
1717

1818
<licenses>
1919
<license>
@@ -275,6 +275,7 @@
275275
<source>${java.version}</source>
276276
<doclint>all,-missing</doclint>
277277
<doctitle>Towny - ${project.version}</doctitle>
278+
<notimestamp>true</notimestamp>
278279
<groups>
279280
<group>
280281
<title>Events</title>
@@ -327,7 +328,7 @@
327328
<plugin>
328329
<groupId>org.apache.maven.plugins</groupId>
329330
<artifactId>maven-shade-plugin</artifactId>
330-
<version>3.6.1</version>
331+
<version>3.6.2</version>
331332
<configuration>
332333
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
333334
<artifactSet>

0 commit comments

Comments
 (0)