65 lines
1.4 KiB
Bash
Executable file
65 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
BOLD='\033[1m'
|
|
RESET='\033[0m'
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
tmpdir=$(mktemp -d)
|
|
trap 'rm -rf "$tmpdir"' EXIT
|
|
|
|
run_job() {
|
|
local name=$1
|
|
shift
|
|
local log="$tmpdir/$name.log"
|
|
if "$@" >"$log" 2>&1; then
|
|
echo -e "${GREEN}✓${RESET} $name"
|
|
return 0
|
|
else
|
|
echo -e "${RED}✗${RESET} $name"
|
|
cat "$log"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
echo -e "${BOLD}Running CI jobs in parallel...${RESET}"
|
|
echo
|
|
|
|
pids=()
|
|
jobs_names=()
|
|
|
|
run_job "stylua" stylua --check . &
|
|
pids+=($!); jobs_names+=("stylua")
|
|
|
|
run_job "selene" selene --display-style quiet . &
|
|
pids+=($!); jobs_names+=("selene")
|
|
|
|
run_job "prettier" prettier --check . &
|
|
pids+=($!); jobs_names+=("prettier")
|
|
|
|
run_job "busted" env \
|
|
LUA_PATH="/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/usr/lib/lua/5.1/?.lua;/usr/lib/lua/5.1/?/init.lua;;" \
|
|
LUA_CPATH="/usr/lib/lua/5.1/?.so;;" \
|
|
nvim -l /usr/lib/luarocks/rocks-5.1/busted/2.3.0-1/bin/busted --verbose spec/ &
|
|
pids+=($!); jobs_names+=("busted")
|
|
|
|
failed=0
|
|
for i in "${!pids[@]}"; do
|
|
if ! wait "${pids[$i]}"; then
|
|
failed=1
|
|
fi
|
|
done
|
|
|
|
echo
|
|
if [ "$failed" -eq 0 ]; then
|
|
echo -e "${GREEN}${BOLD}All jobs passed.${RESET}"
|
|
else
|
|
echo -e "${RED}${BOLD}Some jobs failed.${RESET}"
|
|
exit 1
|
|
fi
|