Add a report to discord task #21

Merged
quentinlegot merged 2 commits from dev into master 2023-07-26 22:37:01 +02:00
6 changed files with 87 additions and 1 deletions
Showing only changes of commit 349ab639da - Show all commits

View File

@ -64,5 +64,7 @@ jobs:
chmod +x ./gradlew chmod +x ./gradlew
touch local.properties touch local.properties
- name: deploy - name: deploy
run: ./gradlew publish run: |
./gradlew publish
./gradlew reportToDiscord

View File

@ -1,3 +1,5 @@
import fr.altarik.ReportDiscord
plugins { plugins {
id 'fabric-loom' version '1.2-SNAPSHOT' apply false id 'fabric-loom' version '1.2-SNAPSHOT' apply false
} }
@ -7,6 +9,14 @@ try {
local.load(new FileInputStream(rootProject.file("local.properties"))) local.load(new FileInputStream(rootProject.file("local.properties")))
} catch (IOException ignored) {} } catch (IOException ignored) {}
group = project.maven_group
version = project.maven_version
String webhookId = getEnv("DISCORD_PUB_ID", local.getProperty("discord_pub_id"))
String webhookToken = getEnv("DISCORD_PUB_TOKEN", local.getProperty("discord_pub_token"))
String repoUrl = "https://repo.altarik.fr/#/" + (project.version.endsWith('SNAPSHOT') ? 'snapshots/' : 'releases/') + project.group.replace(".", "/") + "/" + project.rootProject.name + "/" + project.version
var reportConfig = new ReportDiscord.ReportData("https://discord.com/api/", webhookId, webhookToken, "Update " + project.version + " has been published", repoUrl);
allprojects { allprojects {
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
@ -110,6 +120,10 @@ static def getEnv(String envName, String defaultValue) {
} }
} }
tasks.register("reportToDiscord", ReportDiscord) {
config.set(reportConfig)
}
/*jar { /*jar {
dependsOn subprojects.jar dependsOn subprojects.jar
subprojects.each { project -> subprojects.each { project ->

11
buildSrc/build.gradle Normal file
View File

@ -0,0 +1,11 @@
plugins {
id 'java'
}
dependencies {
implementation "com.squareup.okhttp3:okhttp:${project.okhttp_version}"
}
repositories {
mavenCentral()
}

View File

@ -0,0 +1 @@
okhttp_version=4.10.0

7
buildSrc/settings.gradle Normal file
View File

@ -0,0 +1,7 @@
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
rootProject.name = "buildSrc"

View File

@ -0,0 +1,51 @@
package fr.altarik;
import okhttp3.*;
import org.gradle.api.DefaultTask;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.TaskAction;
import java.io.IOException;
public abstract class ReportDiscord extends DefaultTask {
public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
@Input
public abstract Property<ReportData> getConfig();
private final OkHttpClient client = new OkHttpClient();
@TaskAction
public void report() throws IOException {
ReportData data = getConfig().get();
String message = data.message();
RequestBody body = RequestBody.create("""
{
"embeds": [
{
"title": "A new update for Toolbox is available",
"description":\s""" + "\"" + message + "\"" + """
,
"url":\s""" + "\"" + data.url() + "\"" + """
}
]
}
""", JSON);
String url = data.baseUrl() + "/webhooks/" + data.webhookId + "/" + data.webhookToken;
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try(Response response = client.newCall(request).execute()) {
getLogger().info("report sent");
}
}
public record ReportData(String baseUrl, String webhookId, String webhookToken, String message, String url) {
}
}