#!/usr/bin/env bash # ============================================================================== # Home Assistant Community Add-ons: Bashio # Bashio is a bash function library for use with Home Assistant add-ons. # # It contains a set of commonly used operations and can be used # to be included in add-on scripts to reduce code duplication across add-ons. # ============================================================================== # ------------------------------------------------------------------------------ # Wait for a TCP port to be available. # # Arguments: # $1 Port to wait for # $2 Interface/host the port should bind to (optional, default: localhost) # $3 Timeout in seconds (option, defaults: 60) # ------------------------------------------------------------------------------ bashio::net.wait_for() { local port=${1} local host=${2:-'localhost'} local timeout=${3:-60} local timeout_argument="" bashio::log.trace "${FUNCNAME[0]}" "$@" if timeout -t 1337 true > /dev/null 2>&1; then timeout_argument="-t" fi timeout ${timeout_argument} "${timeout}" \ bash -c \ "until echo > /dev/tcp/${host}/${port} ; do sleep 0.5; done" \ > /dev/null 2>&1 || true; return "${__BASHIO_EXIT_OK}" }