shellspec/shellspec

View on GitHub
lib/support-bin.sh

Summary

Maintainability
Test Coverage
C
70%
#!/bin/sh

# NOTE: This file must be compatible with the Bourne shell,
# because /bin/sh can be the Bourne shell.

# Workaround for ksh. Remove readonly flag inherited to child process
if [ "${SHELLSPEC_PATH_IS_READONLY:-}" ]; then
  if [ ! "$SHELLSPEC_PATH_IS_READONLY" = "-" ]; then
    SHELLSPEC_PATH_IS_READONLY="-"
    # shellcheck disable=SC2086
    exec $SHELLSPEC_SHELL "$0" "$@"
  fi
  # shellcheck disable=SC3044
  typeset +x PATH
  exec "$SHELLSPEC_ENV" PATH="$PATH" SHELLSPEC_PATH_IS_READONLY="" "$0" "$@"
fi

PATH="${SHELLSPEC_PATH:?}"
export PATH

invoke() {
  cmd=$1
  shift

  if [ ! "$SHELLSPEC_BUSYBOX_W32" ]; then
    [ "${ZSH_VERSION:-}" ] && setopt shwordsplit
    OLDIFS=$IFS && IFS=":"
    for p in $PATH; do
      [ -x "$p/$cmd" ] && cmd="$p/$cmd" && break
    done
    IFS=$OLDIFS
  fi

  "$cmd" "$@"
}