diff options
Diffstat (limited to 'zukbeam')
-rwxr-xr-x | zukbeam | 137 |
1 files changed, 137 insertions, 0 deletions
@@ -0,0 +1,137 @@ +#!/bin/sh + +mdtest="$(command -v mdtest)" +data_dir="${PWD}/data" +db_dir="${data_dir}/db" +bin_dir="${PWD}/bin" + +mdpid="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/mdtest.pid" +mdin="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/mdin" && +mdout="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/mdout" && + +usage() +{ + cat <<- EOF + Usage: ${0##*/} [cmd] [options] + A whatsapp bot broadcast news + Commands: + kill-daemon kill the daemon if it is running + Options: + -m <path to mdtest binary> + + EOF +} + +die() +{ + : "${1:?}" + + printf "\033[31;1merr: %b\033[0m\n" "$1" 1>&2 + exit "${2:-1}" +} + +note() +{ + : "${1:?}" + printf "\033[32;1m%b\033[0m\n" "$*" 1>&2 +} + +kill_daemon() +{ + kill "$(cat "$mdpid" 2> /dev/null)" 2> /dev/null && + rm -f "$mdpid" + rm -f "$mdin" + rm -f "$mdout" +} + +start_daemon() +{ + [ -p "$mdin" ] || + mkfifo "$mdin" + [ -p "$mdout" ] || + mkfifo "$mdout" + [ -p "$mdout" ] || + mkfifo "$mdout" + + cd "$db_dir" || exit 1 + tail -f "$mdin" | "$mdtest" > "$mdout" 2>&1 & + echo $! > "$mdpid" + cd - > /dev/null || exit 1 + + trap kill_daemon EXIT +} + +######## +# MAIN # +######## + +cmnd= +infile= +outfile= + +case "$1" in +-*) + ;; +*) + cmnd="$1" + [ "$#" -gt 0 ] && + shift + ;; +esac + +while getopts "m:d:i:o:" f; do + case "$f" in + m) + mdtest="$OPTARG" + ;; + d) + db_dir="$OPTARG" + ;; + i) + infile="$OPTARG" + ;; + o) + outfile="$OPTARG" + ;; + ?) + usage + exit 1 + esac +done + +[ ! -x "$mdtest" ] && + die "invalid mdtest bin" +[ -d "$db_dir" ] || + mkdir -p "$db_dir" + +case "$PATH" in +*"$bin_dir"*) + ;; +*) + PATH="${PATH}:$bin_dir" + ;; +esac + +case "$cmnd" in +kill-daemon) + kill_daemon + exit + ;; +vtono) + [ -z "$infile" ] && + infile="${data_dir}/contacts.vcf" + [ -z "$outfile" ] && + outfile="${data_dir}/contacts.txt" + [ ! -s "$infile" ] && + die "vtono: ${infile}: no such file or directory" + vtono.sh "$infile" > "$outfile" && + note "vtono: contacts saved to ${outfile}" + ;; +"") + kill_daemon + start_daemon + read wip_remove_me + ;; +*) + die "invalid command: ${cmnd}" +esac |