Compare commits

...

3 commits

Author SHA1 Message Date
Bruno BELANYI 9dc5006663 matrix-notifier: use 'auto' default message type
All checks were successful
continuous-integration/drone/push Build is passing
This is the one that makes most sense in CI.
2021-06-12 19:14:29 +02:00
Bruno BELANYI 8f4062256e matrix-notifier: refactor handling of message type 2021-06-12 19:13:56 +02:00
Bruno BELANYI 50948b9ffe matrix-notifier: add 'auto' message type
This is useful to only ping me when the build is failing.
2021-06-12 19:04:17 +02:00

View file

@ -10,8 +10,10 @@ usage() {
print_err " -h, --help" print_err " -h, --help"
print_err " print this usage screen and exit" print_err " print this usage screen and exit"
print_err " -t, --type" print_err " -t, --type"
print_err " which message type should be sent" print_err " which message type should be sent must be one of"
print_err " must be one of 'text' or 'notice'" print_err " 'text' or 'notice', or 'auto'."
print_err " The special value 'auto' defaults to 'notice', unless"
print_err " 'DRONE_BUILD_STATUS' indicates a failure."
} }
# Blessed Stack Overflow # Blessed Stack Overflow
@ -57,6 +59,18 @@ ensure_variables() {
fi fi
} }
get_message_type() {
if [ "$MSG_TYPE" == "auto" ]; then
if [ "$DRONE_BUILD_STATUS" == "failure" ]; then
MSG_TYPE="text"
else
MSG_TYPE="notice"
fi
fi
printf '%s' "m.$MSG_TYPE"
}
send_message() { send_message() {
local login_json local login_json
local token local token
@ -81,13 +95,13 @@ send_message() {
fi fi
message_json="$(printf '%s' "$MESSAGE" | message_json="$(printf '%s' "$MESSAGE" |
jq --raw-input --slurp "{msgtype: \"$MSG_TYPE\", body: .}")" jq --raw-input --slurp "{msgtype: \"$(get_message_type)\", body: .}")"
curl -XPOST \ curl -XPOST \
-d "$message_json" \ -d "$message_json" \
"$ADDRESS/_matrix/client/r0/rooms/$(rawurlencode "$ROOM")/send/m.room.message?access_token=$(rawurlencode "$token")" 2>/dev/null "$ADDRESS/_matrix/client/r0/rooms/$(rawurlencode "$ROOM")/send/m.room.message?access_token=$(rawurlencode "$token")" 2>/dev/null
} }
MSG_TYPE='m.notice' MSG_TYPE='auto'
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
opt="$1" opt="$1"
@ -97,14 +111,19 @@ while [ $# -gt 0 ]; do
-t|--type) -t|--type)
arg="$1" arg="$1"
shift shift
if [ -z "$arg" ]; then if [ -z "$arg" ]; then
print_err "Must give a message type when using '-t|--type'" print_err "Must give a message type when using '-t|--type'"
exit 1 exit 1
elif [ "$arg" != "text" ] && [ "$arg" != "notice" ]; then fi
for type in text notice auto; do
if [ "$arg" == "$type" ]; then
continue 2 # Go to next argument
fi
done
print_err "Invalid message type '$arg'" print_err "Invalid message type '$arg'"
exit 1 exit 1
fi
MSG_TYPE="m.$arg"
;; ;;
-h|--help) -h|--help)
usage usage