Last active
December 6, 2017 14:00
-
-
Save adamdehaven/5544774b4a908bff75d1f0c800cdd789 to your computer and use it in GitHub Desktop.
bash function to post to Slack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/bash | |
posttoslack() { | |
# Prompt user for Slack #channel or @username | |
while true; do | |
read -p "# | |
# Post to channel or username: " "CHANNEL" | |
case "$CHANNEL" in | |
[\#\@][[:lower:]-_]* ) eval SUCCESSMESSAGE="$CHANNEL"; eval CHANNEL='\"channel\":"\"$CHANNEL\"",'; break;; | |
* ) echo "# Please enter a valid channel or username. | |
# Example: #general or @adamdehaven";; | |
esac | |
done | |
# Prompt user for "send as" name | |
while true; do | |
read -p "# Post as: " USERNAME | |
case "$USERNAME" in | |
[[:alnum:][:space:][:punct:]]* ) eval USERNAME='\"username\":"\"$USERNAME\"",'; break;; | |
* ) echo "# Please enter a valid username (nothing offensive).";; | |
esac | |
done | |
# Prompt user for icon emoji | |
while true; do | |
read -p "# Icon Emoji: " EMOJI | |
case "$EMOJI" in | |
[:][[:lower:]]*[:] ) eval EMOJI='\"icon_emoji\":"\"$EMOJI\"",'; break;; | |
[nN][oO] ) eval EMOJI=""; break;; | |
* ) echo "# Please enter a valid emoji code. Example: :ghost:";; | |
esac | |
done | |
# Prompt user for icon emoji | |
while true; do | |
read -p "# Icon Url: " ICONURL | |
case "$ICONURL" in | |
[http][[:alnum:][:punct:]]* | [https][[:alnum:][:punct:]]* ) eval ICONURL='\"icon_url\":"\"$ICONURL\"",'; break;; | |
[nN][oO] ) eval ICONURL=""; break;; | |
* ) echo "# Please enter a valid url.";; | |
esac | |
done | |
# Prompt user for message | |
while true; do | |
read -r -p "# Message to post: " MESSAGE | |
case "$MESSAGE" in | |
[[:alnum:][:blank:][:punct:][:space:]]* ) eval MESSAGE='\"text\":"\"$MESSAGE\""'; break;; | |
* ) echo "# Please enter a valid message.";; | |
esac | |
done | |
apiResponse=$(curl -s -X POST -H 'Content-type: application/json' --data '{'"$CHANNEL""$USERNAME""$EMOJI""$ICONURL""$MESSAGE"'}' https://hooks.slack.com/services/<token>) | |
# Output response | |
if [ "$apiResponse" = "ok" ]; then | |
echo "# Posted to $SUCCESSMESSAGE" | |
else | |
echo "# API ERROR: $apiResponse" | |
fi | |
} | |
alias slack=posttoslack |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment