From 08050af5dbfbd9fc34ddd7eb3211dced775cf800 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Mon, 2 Feb 2026 16:03:50 -0500 Subject: [PATCH] feat(scripts): ci script to run quickly --- scripts/ci.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 scripts/ci.sh diff --git a/scripts/ci.sh b/scripts/ci.sh new file mode 100755 index 0000000..98d17fb --- /dev/null +++ b/scripts/ci.sh @@ -0,0 +1,65 @@ +#!/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