-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathslack-notify.sh
More file actions
executable file
·74 lines (68 loc) · 1.97 KB
/
slack-notify.sh
File metadata and controls
executable file
·74 lines (68 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
# Copyright (C) 2018 Radiant Solutions (http://www.radiantsolutions.com)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -euo pipefail
# Defaults.
SLACK_METHOD="https://slack.com/api/chat.postMessage"
SLACK_CHANNEL=""
SLACK_MESSAGE=""
SLACK_TOKEN=""
SLACK_USERNAME="bot"
USAGE="no"
# Retrieving command-line options.
while getopts ":c:m:t:u:" opt; do
case "$opt" in
c)
SLACK_CHANNEL="$OPTARG"
;;
m)
SLACK_MESSAGE="$OPTARG"
;;
t)
SLACK_TOKEN="$OPTARG"
;;
u)
SLACK_USERNAME="$OPTARG"
;;
*)
USAGE=yes
;;
esac
done
shift $((OPTIND-1))
# Document the usage for this script.
function usage() {
echo "slack-notify.sh -c <Slack Channel> -m <Slack Message> -t <Slack Token>"
echo " [ -u <Slack Username> ]"
echo ""
echo " Sends a text notification to the given Slack channel."
exit 1
}
if [ -z "$SLACK_CHANNEL" -o -z "$SLACK_MESSAGE" -o -z "$SLACK_TOKEN" ]; then
USAGE=yes
fi
if [ "$USAGE" = "yes" ]; then
usage
fi
# Use cURL's `--form` option to automatically set to POST and use the proper
# content type.
curl \
--form channel="$SLACK_CHANNEL" \
--form text="$SLACK_MESSAGE" \
--form token="$SLACK_TOKEN" \
--form username="$SLACK_USERNAME" \
--show-error \
--silent \
"$SLACK_METHOD"