aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/send_webhook_update.sh
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/send_webhook_update.sh')
-rwxr-xr-x.github/workflows/send_webhook_update.sh86
1 files changed, 86 insertions, 0 deletions
diff --git a/.github/workflows/send_webhook_update.sh b/.github/workflows/send_webhook_update.sh
new file mode 100755
index 00000000..1fc39adf
--- /dev/null
+++ b/.github/workflows/send_webhook_update.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+COLOR_SUCCESS=8040199
+COLOR_WORKING=7472302
+COLOR_ERROR=14960972
+case "$STATUS" in
+ WORKING)
+ color="$COLOR_WORKING"
+ status_message="Build started."
+ ;;
+ FAILURE)
+ color="$COLOR_ERROR"
+ status_message="Build failed."
+ ;;
+ SUCCESS)
+ color="$COLOR_SUCCESS"
+ status_message="Build succeeded."
+ to_upload=$(echo build/libs/*-dep.jar)
+ upload_name=NotEnoughUpdates-beta-dep.jar
+ ;;
+esac
+
+author_name=$(git log -1 --pretty=format:'%an')
+commit_hash=$(git log -1 --pretty=format:'%h')
+commit_subject=$(git log -1 --pretty=format:'%s')
+commit_body=$(git log -1 --pretty=format:'%b')
+commit_date=$(git log -1 --pretty=format:'%ct')
+
+author_avatar="https://github.com/$author_name.png"
+
+#language=json
+read -r -d '' structure <<-"EOF"
+{
+ "content": $status,
+ "username": $username,
+ "avatar_url": $avatar_url,
+ "embeds": [
+ {
+ "color": $color,
+ "url": $url,
+ "title": $subject,
+ "description": $body,
+ "footer": {
+ "text": $ref
+ }
+ }
+ ],
+ "allowed_mentions": {
+ "parse": []
+ }
+}
+EOF
+json=$(jq -n \
+ --arg body "$commit_body" \
+ --arg status "$status_message" \
+ --arg subject "$commit_subject" \
+ --arg username "$author_name" \
+ --arg avatar_url "$author_avatar" \
+ --argjson color "$color" \
+ --arg url "$GIT_URL" \
+ --arg ref "$REF_NAME" \
+ "$structure")
+
+function make_request() {
+ if [ "$to_upload" != "" ]; then
+ upload_arg="-F"
+ fi
+ curl -X $1 -H "Content-Type: multipart/form-data" -F "payload_json=$json" "$upload_arg" "$upload_name=@$to_upload" "$WEBHOOK_URL$2?wait=true"
+}
+
+if [ "$MESSAGE_ID" != "" ]; then
+ discord_output=$(make_request PATCH "/messages/$MESSAGE_ID")
+ RESULT=$?
+else
+ discord_output=$(make_request POST)
+ RESULT=$?
+fi
+
+if [ $RESULT != 0 ]; then
+ echo "$discord_output"
+ exit 1
+fi
+echo "Message sent to discord."
+echo "$discord_output" | jq .
+id_string=$(echo "$discord_output" | jq .id)
+echo "::set-output name=MESSAGE_ID=${id_string//\"/}"