diffs.nvim/scripts/ci.sh

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