- #!/usr/bin/env bash
-
- SSH_BIN="ssh"
- USER="example_user"
- SSH_HOST="example.com"
- SSH_SOCKET="/tmp/notmuch_ssh.socket"
- NOTMUCH_REMOTE_BIN="notmuch"
- DTACH="dtach"
- DTACH_SOCKET="/tmp/notmuch_dtach.socket"
+ #!/usr/bin/env bash
+
+ SSH_BIN="ssh"
+ USER="example_user"
+ SSH_HOST="example.com"
+ SSH_SOCKET="/tmp/notmuch_ssh.socket"
+ NOTMUCH_REMOTE_BIN="notmuch"
+ DTACH="dtach"
+ DTACH_SOCKET="/tmp/notmuch_dtach.socket"
+
+ check_for_socket ()
+ {
+ [ -S "${SSH_SOCKET}" ]
+ }
+
+ check_if_socket_alive ()
+ {
+ timeout 1 $SSH_BIN -S ${SSH_SOCKET} $USER@$SSH_HOST true > /dev/null
+ }
+
+ start_socket ()
+ {
+ dtach_command="${DTACH} -n ${DTACH_SOCKET} ${SSH_BIN} -M -S ${SSH_SOCKET} ${USER}@${SSH_HOST}"
+ command -v ${DTACH} &>/dev/null && ${dtach_command} ||
+ echo "${DTACH} not installed"
+ }
+
+ notmuch_run ()
+ {
+ check_for_socket || start_socket
+ CMD=$1
+ shift
+ printf -v ARGS "%q " "$@"
+ $SSH_BIN -S $SSH_SOCKET $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN ${CMD} ${ARGS}
+ }
+
+ notmuch_run $@