part #2
This commit is contained in:
82
scripts/build-all-solutions.sh
Normal file
82
scripts/build-all-solutions.sh
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Build (and optionally test) all module solutions under src/.
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/build-all-solutions.sh # build only
|
||||
# ./scripts/build-all-solutions.sh --test # build + test
|
||||
# ./scripts/build-all-solutions.sh --test --configuration Release
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
SRC_DIR="$REPO_ROOT/src"
|
||||
|
||||
RUN_TESTS=false
|
||||
CONFIGURATION="Debug"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--test|-t) RUN_TESTS=true; shift ;;
|
||||
--configuration|-c) CONFIGURATION="$2"; shift 2 ;;
|
||||
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Discover solutions (exclude root StellaOps.sln)
|
||||
mapfile -t SOLUTIONS < <(find "$SRC_DIR" -name '*.sln' ! -name 'StellaOps.sln' | sort)
|
||||
|
||||
if [[ ${#SOLUTIONS[@]} -eq 0 ]]; then
|
||||
echo "ERROR: No solution files found under src/." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found ${#SOLUTIONS[@]} solution(s) to build."
|
||||
echo ""
|
||||
|
||||
build_pass=()
|
||||
build_fail=()
|
||||
test_pass=()
|
||||
test_fail=()
|
||||
|
||||
for sln in "${SOLUTIONS[@]}"; do
|
||||
rel="${sln#"$REPO_ROOT/"}"
|
||||
echo "--- BUILD: $rel ---"
|
||||
|
||||
if dotnet build "$sln" --configuration "$CONFIGURATION" --nologo -v quiet; then
|
||||
build_pass+=("$rel")
|
||||
else
|
||||
build_fail+=("$rel")
|
||||
echo " FAILED"
|
||||
continue
|
||||
fi
|
||||
|
||||
if $RUN_TESTS; then
|
||||
echo "--- TEST: $rel ---"
|
||||
if dotnet test "$sln" --configuration "$CONFIGURATION" --nologo --no-build -v quiet; then
|
||||
test_pass+=("$rel")
|
||||
else
|
||||
test_fail+=("$rel")
|
||||
echo " TEST FAILED"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "========== Summary =========="
|
||||
echo "Build passed : ${#build_pass[@]}"
|
||||
if [[ ${#build_fail[@]} -gt 0 ]]; then
|
||||
echo "Build failed : ${#build_fail[@]}"
|
||||
for f in "${build_fail[@]}"; do echo " - $f"; done
|
||||
fi
|
||||
if $RUN_TESTS; then
|
||||
echo "Test passed : ${#test_pass[@]}"
|
||||
if [[ ${#test_fail[@]} -gt 0 ]]; then
|
||||
echo "Test failed : ${#test_fail[@]}"
|
||||
for f in "${test_fail[@]}"; do echo " - $f"; done
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${#build_fail[@]} -gt 0 ]] || [[ ${#test_fail[@]} -gt 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user