#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ROOT_DIR=$(cd "$SCRIPT_DIR/../.." && pwd) SHELLSPEC_VERSION="0.28.1" VENDOR_DIR="$SCRIPT_DIR/.vendor" ARCHIVE="$VENDOR_DIR/shellspec-${SHELLSPEC_VERSION}.tar.gz" EXTRACT_DIR="$VENDOR_DIR/shellspec-${SHELLSPEC_VERSION}" mkdir -p "$VENDOR_DIR" if command -v shellspec >/dev/null 2>&1; then SHELLSPEC_BIN="shellspec" else if [[ ! -d "$EXTRACT_DIR" ]]; then if [[ ! -f "$ARCHIVE" ]]; then # GitHub tags may be either `v` or ``. curl -fsSL "https://github.com/shellspec/shellspec/archive/refs/tags/v${SHELLSPEC_VERSION}.tar.gz" -o "$ARCHIVE" \ || curl -fsSL "https://github.com/shellspec/shellspec/archive/refs/tags/${SHELLSPEC_VERSION}.tar.gz" -o "$ARCHIVE" fi tar -xzf "$ARCHIVE" -C "$VENDOR_DIR" extracted_dir="" if [[ -d "$VENDOR_DIR/shellspec-${SHELLSPEC_VERSION}" ]]; then extracted_dir="$VENDOR_DIR/shellspec-${SHELLSPEC_VERSION}" elif [[ -d "$VENDOR_DIR/shellspec-v${SHELLSPEC_VERSION}" ]]; then extracted_dir="$VENDOR_DIR/shellspec-v${SHELLSPEC_VERSION}" fi if [[ -n "$extracted_dir" && "$extracted_dir" != "$EXTRACT_DIR" ]]; then mv "$extracted_dir" "$EXTRACT_DIR" fi fi SHELLSPEC_BIN="$EXTRACT_DIR/shellspec" fi cd "$ROOT_DIR" exec "$SHELLSPEC_BIN" --shell bash "$ROOT_DIR/tests/shellspec/spec" "$@"