summaryrefslogblamecommitdiff
path: root/zukbeam
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