diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d2b23f..a7e7c6e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,9 +1,9 @@ name: build on: push: - branches: [ "main", "develop" ] + branches: [ "main", "develop", "version/*" ] pull_request: - branches: [ "main", "develop" ] + branches: [ "main", "develop", "version/*" ] permissions: contents: write @@ -17,7 +17,7 @@ jobs: 17, # Current Java LTS & minimum supported by Minecraft ] # and run on Linux - os: [ubuntu-latest] + os: [ ubuntu-latest ] runs-on: ${{ matrix.os }} steps: @@ -43,15 +43,127 @@ jobs: with: arguments: build + - name: Prepare Changelog + run: ./gradlew -q prepareChangelog > prepared_changelog.md + - name: Capture Fabric Artifacts if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: Fabric Artifacts + name: build-fabric path: fabric/build/libs - name: Capture Forge Artifacts if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 + with: + name: build-forge + path: forge/build/libs + - name: Capture Changelog + if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS + uses: actions/upload-artifact@v4 + with: + name: Changelog + path: prepared_changelog.md + publish: + needs: + - build + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download Fabric artifacts + uses: actions/download-artifact@v4 + with: + path: build/fabric + pattern: build-fabric + merge-multiple: true + - name: Download Forge artifacts + uses: actions/download-artifact@v4 + with: + path: build/forge + pattern: build-forge + merge-multiple: true + - name: Download Changelog + uses: actions/download-artifact@v4 + with: + path: prepared_changelog.md + pattern: Changelog + + - name: List build artifacts + run: ls -R fabric forge + - name: Show Changelog + run: cat prepared_changelog.md + + - name: Get Version and Platform + id: properties + uses: christian-draeger/read-properties@1.1.1 with: - name: Forge Artifacts - path: forge/build/libs \ No newline at end of file + path: "./gradle.properties" + properties: "version enabledPlatforms minecraftVersion" + + - name: Upload Forge Releases (Curse/Modrinth/Github) + id: forge_release + if: contains(steps.properties.outputs.enabledPlatforms, 'forge') + uses: Kir-Antipov/mc-publish@v3.3.0 + with: + curseforge-id: ${{ vars.CURSE_ID }} + curseforge-token: ${{ secrets.CURSE_TOKEN }} + + modrinth-id: ${{ vars.MODRINTH_ID }} + modrinth-token: ${{ secrets.MODRINTH_TOKEN }} + + github-tag: "mc${{ steps.properties.outputs.minecraftVersion }}-${{ steps.properties.output.version }}" + github-commitish: "version/${{ steps.properties.outputs.minecraftVersion }}" + github-token: ${{ secrets.GITHUB_TOKEN }} + + files: ./build/forge/!(*-@(dev|sources|dev-shadow)).jar + name: "AstralBot ${{ steps.properties.outputs.version }} Forge ${{ steps.properties.output.minecraftVersion }}" + version: ${{ steps.properties.outputs.version }} + version-type: release + changelog-file: prepared_changelog.md + loaders: forge + game-versions: ${{ steps.properties.outputs.minecraftVersion }} + version-resolver: exact + + curseforge-dependencies: | + sqlite-jdbc(optional) + kotlin-for-forge(required) + modrinth-dependencies: | + sqlite-jdbc(optional) + kotlin-for-forge(required) + + - name: Upload Fabric Releases (Curse/Modrinth/Github) + id: fabric_release + if: contains(steps.properties.outputs.enabledPlatforms, 'fabric') + uses: Kir-Antipov/mc-publish@v3.3.0 + with: + curseforge-id: ${{ vars.CURSE_ID }} + curseforge-token: ${{ secrets.CURSE_TOKEN }} + + modrinth-id: ${{ vars.MODRINTH_ID }} + modrinth-token: ${{ secrets.MODRINTH_TOKEN }} + + github-tag: "mc${{ steps.properties.outputs.minecraftVersion }}-${{ steps.properties.output.version }}" + github-commitish: "version/${{ steps.properties.outputs.minecraftVersion }}" + github-token: ${{ secrets.GITHUB_TOKEN }} + + files: ./build/fabric/!(*-@(dev|sources|dev-shadow)).jar + name: "AstralBot ${{ steps.properties.outputs.version }} Fabric ${{ steps.properties.output.minecraftVersion }}" + version: ${{ steps.properties.outputs.version }} + version-type: release + changelog-file: prepared_changelog.md + loaders: fabric + game-versions: ${{ steps.properties.outputs.minecraftVersion }} + version-resolver: exact + + curseforge-dependencies: | + fabric-api(required) + fabric-language-kotlin(required) + sqlite-jdbc(optional) + ledger(optional) + modrinth-dependencies: | + fabric-api(required) + fabric-language-kotlin(required) + sqlite-jdbc(optional) + ledger(optional) \ No newline at end of file diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..4f1f34a --- /dev/null +++ b/Changelog.md @@ -0,0 +1,30 @@ +# 1.2.0 +- Unlink other Discord users with permissions +- Customizable text for basically anything +- `/headpat` command +- More graceful shutdown +- `/link` as a Minecraft command for people who want to be linked but are already whitelisted by another way +- Exception handling for commands server side, resulting in less commands that don't get a response + +# 1.1.0 +- Management Commands: + - `/tps` + - `/usage` + - `/stop` + - `/uptime` +- Stop Minecraft usernames being formatted as Markdown on Discord +- Rework enabled commands config + +# 1.0.2 +- Solve Compatibility issue with [GML](https://modrinth.com/mod/gml) on Forge +- Fix empty whitelist Database handling + +# 1.0.1 +- Config option to disable `/unlink` +- Async bot startup +- Make `/reload` command remove no longer registered commands +- Update dependencies +- Make SQLite driver an external dependency, allowing compatibility with [Ledger](https://modrinth.com/mod/ledger) + +# 1.0.0 +Initial Release \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 0b746c8..ab05878 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,6 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import dev.architectury.plugin.ArchitectPluginExtension import net.fabricmc.loom.api.LoomGradleExtensionAPI import net.fabricmc.loom.task.RemapJarTask +import java.nio.charset.StandardCharsets plugins { // This is an Architectury repository, as such the relevant plugins are needed @@ -218,4 +219,10 @@ subprojects { kotlin { jvmToolchain(17) +} + +tasks.create("prepareChangelog") { + var changelog = File("Changelog.md").readText(StandardCharsets.UTF_8) + changelog = changelog.replace(Regex("[^^](#(#|\\n|.)+)|(^#.+)"), "") + println(changelog.trim()) } \ No newline at end of file