blob: 1cdd495b6e99945fce9bdba16893094f44addc8b (
plain) (
tree)
|
|
#!/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
;;
vtoc)
[ -z "$infile" ] &&
infile="${data_dir}/contacts.vcf"
[ -z "$outfile" ] &&
outfile="${data_dir}/contacts.csv"
[ ! -s "$infile" ] &&
die "vtoc: ${infile}: no such file or directory"
vtoc.sh "$infile" > "$outfile" &&
note "vtoc: contacts saved to ${outfile}"
;;
"")
kill_daemon
start_daemon
read wip_remove_me
;;
*)
die "invalid command: ${cmnd}"
esac
|