summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-06-30 13:25:04 +0200
committerErich Eckner <git@eckner.net>2017-06-30 13:25:04 +0200
commit68fc1ab8e4f03cb4c76ab3ffa79403a26008becd (patch)
tree2e9dab74499142006b7fc539e8f15b701b962118
downloadsend-to-irc-68fc1ab8e4f03cb4c76ab3ffa79403a26008becd.tar.xz
-rwxr-xr-xsend-to-irc50
1 files changed, 50 insertions, 0 deletions
diff --git a/send-to-irc b/send-to-irc
new file mode 100755
index 0000000..4241126
--- /dev/null
+++ b/send-to-irc
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -e
+
+if [ $# -eq 2 ]; then
+ user="$(whoami)_$(hostname)"
+ channel="$1"
+ message="$2"
+elif [ $# -eq 3 ]; then
+ user="$1"
+ channel="$2"
+ message="$3"
+else
+ echo 'Need 2 or 3 arguments: (user) channel message.'
+ exit 1
+fi
+
+pid=''
+
+clean_up() {
+ rm -rf --one-file-system "${tmp_dir}"
+ if [ -n "${pid}" ]; then
+ kill ${pid}
+ fi
+}
+tmp_dir="$(mktemp -d)"
+trap clean_up EXIT
+
+mkfifo "${tmp_dir}/input"
+mkfifo "${tmp_dir}/output"
+
+ncat irc.home.eckner.net 6667 < \
+ "${tmp_dir}/input" > \
+ "${tmp_dir}/output" &
+pid=$!
+
+(
+ printf '%s\n' 'NICK '"${user}" 'USER '"${user}"' 8 * : '"${user}"
+
+ while read -r s; do
+ echo "$s" >&2
+ if [[ "${s}" = *"MODES"* ]]; then
+ printf '%s\n' 'JOIN '"${channel}" 'PRIVMSG '"${channel}"' :'"${message}" 'QUIT'
+ fi
+ done \
+ < "${tmp_dir}/output"
+) \
+ > "${tmp_dir}/input"
+
+unset pid