- #!/usr/bin/env bash
-
- SSH_BIN="/path/to/ssh/on/client"
- USER="user_name"
- HOST="server_name"
- NOTMUCH_REMOTE_BIN="/path/to/notmuch/on/server"
-
- if [ $1 = "search" ]; then
- COUNT=0;
- OUT=`$SSH_BIN $USER@$HOST $NOTMUCH_REMOTE_BIN $@`
- echo "$OUT" | while read line; do
- COUNT=`expr $COUNT + 1`
- echo "$line";
- if [ $COUNT = 10 ]; then
- sleep 0.1;
- fi
- done
- else
- $SSH_BIN $USER@$HOST $NOTMUCH_REMOTE_BIN $@
- fi
-
+ #!/usr/bin/env bash
+ SSH_BIN="/path/to/ssh/on/client"
+ USER="user_name"
+ SSH_HOST="server_name"
+ NOTMUCH_REMOTE_BIN="/path/to/notmuch/on/server"
+ CACHE="${HOME}/.notmuch-cache.d"
+
+ notmuch_run ()
+ {
+ if [ $1 = "search" ]; then
+ $SSH_BIN $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN $@ | while read line; do
+ sleep 0.1
+ echo "${line}"
+ done
+ else
+ $SSH_BIN $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN $@
+ fi
+ }
+
+ check_for_file_name ()
+ {
+ [ -f "${CACHE}/${1}" ]
+ }
+
+ fetch_file ()
+ {
+ FILE_DIR="${CACHE}/$(dirname ${1})"
+ [ -d "${FILE_DIR}" ] || mkdir -p "${FILE_DIR}"
+ scp ${SSH_HOST}:${1} "${FILE_DIR}" > /dev/null 2>&1
+ retcode="${?}"
+ if [ "${retcode}" -ne "0" ]; then
+ echo "Failed to fetch file" 1>&2
+ exit ${retcode}
+ fi
+ }
+
+ notmuch_get ()
+ {
+ [ -d "${CACHE}" ] || mkdir -p "${CACHE}"
+
+ check_for_file_name ||
+ fetch_file ${1} &&
+ printf "${CACHE}/${1}\n"
+ }
+
+ if [ ${1} = "--get" ]; then
+ notmuch_get $2
+ else
+ notmuch_run $@
+ fi
+