#!/usr/bin/env bash realpath() { OURPWD=$PWD cd "$(dirname "$1")" LINK=$(readlink "$(basename "$1")") while [ "$LINK" ]; do cd "$(dirname "$LINK")" LINK=$(readlink "$(basename "$1")") done REALPATH="$PWD/$(basename "$1")" cd "$OURPWD" echo "$REALPATH" } timezone() { if [ "$(uname)" == "Darwin" ]; then TZ=$(readlink /etc/localtime | sed 's#/var/db/timezone/zoneinfo/##') else TZ=$(readlink /etc/timezone) fi echo $TZ } # Only allocate tty if one is detected. See - https://stackoverflow.com/questions/911168 if [[ -t 0 ]]; then IT+=(-i); fi if [[ -t 1 ]]; then IT+=(-t); fi USER="$(id -u $(logname)):$(id -g $(logname))" WORKDIR="$(realpath .)" MOUNT="type=bind,source=${WORKDIR},target=${WORKDIR}" TZ="$(timezone)" exec docker run --rm "${IT[@]}" --user "${USER}" -e TZ="${TZ}" --workdir "${WORKDIR}" --mount "${MOUNT}" nextgenusfs/funannotate:latest funannotate "$@"