Add a report to discord task #21
@ -64,5 +64,7 @@ jobs:
|
||||
chmod +x ./gradlew
|
||||
touch local.properties
|
||||
- name: deploy
|
||||
run: ./gradlew publish
|
||||
run: |
|
||||
./gradlew publish
|
||||
./gradlew reportToDiscord
|
||||
|
||||
|
14
build.gradle
14
build.gradle
@ -1,3 +1,5 @@
|
||||
import fr.altarik.ReportDiscord
|
||||
|
||||
plugins {
|
||||
id 'fabric-loom' version '1.2-SNAPSHOT' apply false
|
||||
}
|
||||
@ -7,6 +9,14 @@ try {
|
||||
local.load(new FileInputStream(rootProject.file("local.properties")))
|
||||
} 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 {
|
||||
apply plugin: 'maven-publish'
|
||||
@ -110,6 +120,10 @@ static def getEnv(String envName, String defaultValue) {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register("reportToDiscord", ReportDiscord) {
|
||||
config.set(reportConfig)
|
||||
}
|
||||
|
||||
/*jar {
|
||||
dependsOn subprojects.jar
|
||||
subprojects.each { project ->
|
||||
|
11
buildSrc/build.gradle
Normal file
11
buildSrc/build.gradle
Normal file
@ -0,0 +1,11 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "com.squareup.okhttp3:okhttp:${project.okhttp_version}"
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
1
buildSrc/gradle.properties
Normal file
1
buildSrc/gradle.properties
Normal file
@ -0,0 +1 @@
|
||||
okhttp_version=4.10.0
|
7
buildSrc/settings.gradle
Normal file
7
buildSrc/settings.gradle
Normal file
@ -0,0 +1,7 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
rootProject.name = "buildSrc"
|
51
buildSrc/src/main/java/fr/altarik/ReportDiscord.java
Normal file
51
buildSrc/src/main/java/fr/altarik/ReportDiscord.java
Normal 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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user