#! /usr/bin/env sh

for arg in "$@"; do
    case "$arg" in
    "--help" | "-h")
        cat <<-EOF
            valgrind_test.sh [BINARY_NAME] [ARGS_FOR_BINARY..]
EOF
        exit 0
        ;;
    esac
done

binary_name="${1-main}"
[ -n "$1" ] && shift 1

log_file="$(git rev-parse --show-toplevel)/target/valgrind_out.report"
mkdir --parents "$(dirname "$log_file")"

CFLAGS="-ggdb3" make "$binary_name"

valgrind --leak-check=full \
    --show-leak-kinds=all \
    --show-error-list=yes \
    --track-origins=yes \
    --log-file="$log_file" \
    "./target/$binary_name" "$@"

cat "$log_file"