PHP Classes

File: wait-for

Recommend this page to a friend!
  Classes of Kamil Dziedzic   Ninja Mutex   wait-for   Download  
File: wait-for
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Ninja Mutex
Lock resources to prevent simultaneous accesses
Author: By
Last change: Update of wait-for
Date: 6 months ago
Size: 1,453 bytes
 

Contents

Class file image Download
#!/bin/sh TIMEOUT=15 QUIET=0 echoerr() { if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi } usage() { exitcode="$1" cat <<USAGE >&2 Usage: command host:port [-t timeout] [-- command args] -q | --quiet Do not output any status messages -t TIMEOUT | --timeout=timeout Timeout in seconds, zero for no timeout -- COMMAND ARGS Execute command with args after the test finishes USAGE exit "$exitcode" } wait_for() { if ! command -v nc >/dev/null; then echoerr 'nc command is missing!' exit 1 fi for i in $(seq $TIMEOUT); do nc -z "$HOST" "$PORT" >/dev/null 2>&1 result=$? if [ $result -eq 0 ]; then if [ $# -gt 0 ]; then exec "$@" fi exit 0 fi sleep 1 done echo "Operation timed out" >&2 exit 1 } while [ $# -gt 0 ]; do case "$1" in *:*) HOST=$(printf "%s\n" "$1" | cut -d : -f 1) PORT=$(printf "%s\n" "$1" | cut -d : -f 2) shift 1 ;; -q | --quiet) QUIET=1 shift 1 ;; -t) TIMEOUT="$2" if [ "$TIMEOUT" = "" ]; then break; fi shift 2 ;; --timeout=*) TIMEOUT="${1#*=}" shift 1 ;; --) shift break ;; --help) usage 0 ;; *) echoerr "Unknown argument: $1" usage 1 ;; esac done if [ "$HOST" = "" ] || [ "$PORT" = "" ]; then echoerr "Error: you need to provide a host and port to test." usage 2 fi wait_for "$@"