CAN_BIND=1

# Bind a directory or copy it on error
#
# usage: ynh_bind_or_cp srcdir destdir as_root
# | arg: srcdir - directory to bind or copy
# | arg: destdir - mountpoint or destination directory
# | arg: as_root - 1 to execute commands as root
ynh_bind_or_cp() {
    SRCDIR=$1
    DESTDIR=$2
    SUDO_CMD="sudo"
    [[ "$3" != "1" ]] && SUDO_CMD=""

    if [[ $CAN_BIND == 1 ]]; then
        $SUDO_CMD mkdir -p $DESTDIR
        $SUDO_CMD mount --bind "$SRCDIR" "$DESTDIR"
        if [[ $? == 0 ]]; then
            for m in $(mount | grep " $SRCDIR" | awk '{ print $3 }'); do
                $SUDO_CMD mount --bind "$m" "${DESTDIR}${m#${SRCDIR}}"
            done
            return
        fi
        echo "Error: bind mounting seems to be disabled on your system."
        echo "You have maybe to check your apparmor configuration."
        CAN_BIND=0
    fi
    $SUDO_CMD cp -r "$SRCDIR" "$DESTDIR"
}

# Create a directory under /tmp
#
# usage: ynh_mkdir_tmp
# | ret: the created directory path
ynh_mkdir_tmp() {
    TMPDIR="/tmp/$(ynh_string_random 6)"
    while [ -d $TMPDIR ]; do
        TMPDIR="/tmp/$(ynh_string_random 6)"
    done
    mkdir -p "$TMPDIR" && echo "$TMPDIR"
}