2026-08-10 11:42:45 +08:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
|
|
set -Eeuo pipefail
|
|
|
|
|
|
|
|
|
|
|
|
readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
|
readonly WORKSPACE_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
|
|
|
|
|
|
|
|
cd -- "${WORKSPACE_ROOT}"
|
|
|
|
|
|
|
2026-09-22 21:15:34 +08:00
|
|
|
|
# 本地开发前提:go.work 把共享 SDK 替换为工作区外的相对路径,缺少该目录时整个工作区都无法解析。
|
|
|
|
|
|
readonly SDK_DIR="${WORKSPACE_ROOT}/../../bsm-sdk/core"
|
|
|
|
|
|
if [[ ! -d "${SDK_DIR}" ]]; then
|
|
|
|
|
|
echo "error: 未找到共享 SDK 目录: ${SDK_DIR}" >&2
|
|
|
|
|
|
echo "error: 本地开发前提不满足:请先将 bsm-sdk/core 检出到工作区上一级目录的同级路径,即 ${SDK_DIR}" >&2
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
unformatted="$(gofmt -l pkgs module scripts)"
|
2026-08-10 11:42:45 +08:00
|
|
|
|
if [[ -n "${unformatted}" ]]; then
|
|
|
|
|
|
printf 'error: gofmt required:\n%s\n' "${unformatted}" >&2
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
mapfile -t modules < <(go list -m -f '{{.Dir}}')
|
2026-09-22 21:15:34 +08:00
|
|
|
|
if (( ${#modules[@]} == 0 )); then
|
|
|
|
|
|
echo "error: 未解析到任何工作区模块,go list -m 可能失败或返回空列表" >&2
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-08-10 11:42:45 +08:00
|
|
|
|
for module_dir in "${modules[@]}"; do
|
|
|
|
|
|
echo "==> ${module_dir}"
|
|
|
|
|
|
(
|
|
|
|
|
|
cd -- "${module_dir}"
|
|
|
|
|
|
if [[ "${SKIP_VET:-0}" != "1" ]]; then
|
|
|
|
|
|
go vet ./...
|
|
|
|
|
|
fi
|
|
|
|
|
|
go test ./...
|
|
|
|
|
|
)
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
echo "Workspace verification completed successfully."
|