Skip to content

Commit c83511e

Browse files
authored
Upload to Modrinth and Hangar (#360)
* Replace curseforge-upload with mc-publish * Use anchors for common configurations * Convert script to a shared run step
1 parent c095a78 commit c83511e

2 files changed

Lines changed: 79 additions & 77 deletions

File tree

Lines changed: 79 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Release to CurseForge
1+
name: Release to external sites
22

33
on:
44
release:
@@ -8,30 +8,90 @@ jobs:
88
curseforge_release:
99
runs-on: ubuntu-latest
1010
steps:
11-
- name: Checkout Code
12-
uses: actions/checkout@v6
13-
with:
14-
fetch-depth: 0
11+
- &parse-paper-versions
12+
name: Parse Paper Versions
13+
id: parse_versions
14+
run: |
15+
# Find line declaring Paper versions.
16+
raw=$(grep "\\*\\*Paper:\\*\\*" <<< "${{ github.event.release.body }}")
17+
18+
# Enable extended glob pattern to match 0 or more whitespace characters.
19+
shopt -s extglob
20+
# Trim Paper versions identifier prefix.
21+
raw=${raw/*([[:space:]])'**'Paper:'**'*([[:space:]])/}
22+
# Replace commas and optional spaces with a newline.
23+
raw=${raw//,*([[:space:]])/$'\n'}
24+
# Turn extglob back off.
25+
shopt -u extglob
26+
27+
echo "$raw"
28+
printf "PAPER_VERSIONS<<EOF\n%s\nEOF\n" "$raw" >> "$GITHUB_OUTPUT"
1529
16-
- name: Fetch Github Release Asset
30+
- &fetch-release-asset
31+
name: Fetch Github Release Asset
1732
uses: dsaltares/fetch-gh-release-asset@1.1.2
1833
with:
1934
token: ${{ secrets.GITHUB_TOKEN }}
2035
version: ${{ github.event.release.id }}
2136
file: OpenInv.jar
2237

23-
- name: Set CurseForge Variables
24-
run: . scripts/set_curseforge_env.sh "${{ github.event.release.body }}"
25-
2638
- name: Create CurseForge Release
27-
uses: itsmeow/curseforge-upload@v3
39+
uses: Kira-NT/mc-publish@v3.3
40+
with:
41+
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
42+
curseforge-id: 31432
43+
files: ./OpenInv.jar
44+
game-versions: "${{ steps.parse_versions.outputs.PAPER_VERSIONS }}"
45+
game-version-filter: releases
46+
47+
modrinth_release:
48+
runs-on: ubuntu-latest
49+
steps:
50+
- *parse-paper-versions
51+
- *fetch-release-asset
52+
53+
- name: Create Modrinth Release
54+
uses: Kira-NT/mc-publish@v3.3
55+
with:
56+
modrinth-id: 1UlvXbzL
57+
modrinth-featured: false
58+
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
59+
files: ./OpenInv.jar
60+
game-versions: "${{ steps.parse_versions.outputs.PAPER_VERSIONS }}"
61+
game-version-filter: releases
62+
63+
hangar_release:
64+
runs-on: ubuntu-latest
65+
steps:
66+
- name: Parse Hangar Paper Versions
67+
id: parse_versions
68+
run: |
69+
# Find line declaring Paper versions.
70+
raw=$(grep "\\*\\*Paper:\\*\\*" <<< "${{ github.event.release.body }}")
71+
# Trim Paper versions identifier prefix.
72+
raw=${raw/'**'Paper:'**'/}
73+
74+
# Generate JSON for Hangar. GitHub Actions provides jq 1.7 in the 24.04 image.
75+
# Trim, then split on comma and optional spaces.
76+
hangar_versions=$(jq -nc --arg versions "$raw" '{"PAPER": $versions | trim | split(", *";null)}')
77+
78+
echo "$hangar_versions"
79+
echo "HANGAR_PAPER_VERSIONS=$hangar_versions" >> "$GITHUB_OUTPUT"
80+
81+
- *fetch-release-asset
82+
83+
- name: Create Hangar Release
84+
uses: benwoo1110/hangar-upload-action@v1
2885
with:
29-
token: "${{ secrets.CURSEFORGE_TOKEN }}"
30-
project_id: 31432
31-
game_endpoint: minecraft
32-
file_path: ./OpenInv.jar
33-
display_name: "${{ github.event.release.name }}"
34-
game_versions: "${{ env.CURSEFORGE_MINECRAFT_VERSIONS }}"
35-
release_type: release
36-
changelog_type: markdown
37-
changelog: "${{ github.event.release.body }}"
86+
api_token: ${{ secrets.HANGAR_TOKEN }}
87+
slug: 'OpenInv'
88+
version: ${{ github.event.release.tag_name }}
89+
channel: release
90+
files: |-
91+
[
92+
{
93+
"path": "./OpenInv.jar",
94+
"platforms": ["PAPER"]
95+
}
96+
]
97+
platform_dependencies: "${{ steps.parse_versions.outputs.HANGAR_PAPER_VERSIONS }}"

scripts/set_curseforge_env.sh

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)