#!/usr/bin/env bash _PLUG_TITLE="ntfy Helper" _PLUG_DESCRIPTION="" _PLUG_ARGS=( "message;m;;string" "title;t;;string;(No Title)" "file;f;;path" "level;l;;string;info" "invoked-by;i;;string" ) function get_host_emoji() { hostname="$1" hostname_length="${#hostname}" if [[ "$hostname" =~ (^| )([a-z]{2}[0-9]{2,3})($| ) ]]; then case "${hostname:0:2}" in "de") echo "🇩đŸ‡Ē" ;; "fi") echo "đŸ‡Ģ🇮" ;; "fr") echo "đŸ‡Ģ🇷" ;; "gb") echo "đŸ‡Ŧ🇧" ;; "nl") echo "đŸ‡ŗ🇱" ;; *) echo "❔" ;; esac elif [[ "$hostname" =~ (^| )([a-z]{3}[0-9]{3})($| ) ]]; then echo "☁ī¸" else echo "đŸ–Ĩī¸" fi } function get_level_emoji() { case "$1" in "critical"|"error") echo "⛔" ;; "warning") echo "⚠ī¸" ;; "success") echo "✅" ;; "info") echo "ℹī¸" ;; "debug"|*) echo "🔧" ;; esac } function get_level_priority() { case "$1" in "critical") echo "5" ;; "error") echo "4" ;; "warning") echo "4" ;; "success") echo "3" ;; "info") echo "2" ;; "debug"|*) echo "1" ;; esac } function get_topic() { invoked_by="$1" topic_prefix="zio" topic="test" if [[ -n "$invoked_by" ]]; then topic="$(echo "$invoked_by" | sed -r 's/sh.zio.//g' | sed -r 's/[.]+/-/g')" fi echo "${topic_prefix}_$topic" } function main() { token_path="$(get_config_dir "sh.zio.notify")/token" [[ ! -f "$token_path" ]] && die "'$token_path' does not exist" token="$(cat "$token_path")" hostname="$(hostname -s)" host_emoji="$(get_host_emoji $hostname)" invoked_by="$_invoked_by" level_emoji="$(get_level_emoji "$_level")" priority="$(get_level_priority "$_level")" topic="$(get_topic "$_invoked_by")" curl_command="curl" curl_command+=" -H \"Authorization: Bearer $token\"" curl_command+=" -H \"Markdown: yes\"" curl_command+=" -H \"Priority: $priority\"" curl_command+=" -H \"Tags: $hostname,$invoked_by\"" curl_command+=" -H \"Title: $host_emoji $hostname | $level_emoji $_title\"" if [[ "$_message" != "true" ]]; then curl_command+=" -H \"Message: $_message\"" fi if [[ "$_file" != "" ]]; then if [[ ! -f "$_file" ]]; then die "Cannot attach '$_file': file does not exist" fi if [[ "$n_message" != "" ]]; then say warning "Cannot send --message/-m with --file/-f. Only sending file" fi full_file="$(realpath -s "$_file")" curl_command+=" -T \"$full_file\"" curl_command+=" -H \"Filename: $(basename "$full_file")\"" else curl_command+=" -X POST" # HACK: Attachments don't work if you use "Cache: no" if [[ "$topic" == "zio_test" ]]; then curl_command+=" -H \"Cache: no\"" fi fi curl_command+=" https://ntfy.zio.sh/$topic" eval $curl_command } if [[ $_PLUG_INVOKED != "true" ]]; then base_dir="$(dirname "$(realpath -s "$0")")" git_dir="$base_dir/../../.." if [[ -d "$git_dir/.git" ]]; then . "$git_dir/usr/local/libexec/zio/helpers/bash.sh" else . "/usr/local/libexec/zio/helpers/bash.sh" fi export -f get_config_dir if [[ -d "$git_dir/.git" ]]; then "$git_dir/usr/local/libexec/sodalite/invoker/src/invoke.sh" "$0" $@ else "/usr/local/libexec/sodalite/invoker/src/invoke.sh" "$0" $@ fi fi