#!/bin/sh # 检查 SDK module 可脱离服务端仓库独立测试、检查和构建。 set -eu TASK_GO=${GO:-go} TASK_SDK_DIR=${ORBIT_SDK_DIR:-sdk/go} TASK_DEPS=$(mktemp "${TMPDIR:-/tmp}/orbit-sdk-deps.XXXXXX") cleanup() { unlink "$TASK_DEPS" 2>/dev/null || true } trap cleanup EXIT HUP INT TERM if [ ! -f "$TASK_SDK_DIR/go.mod" ]; then printf '%s\n' 'SDK go.mod not found.' >&2 exit 1 fi if grep -Eq 'github\.com/go-sql-driver/mysql|git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)' "$TASK_SDK_DIR/go.mod"; then printf '%s\n' 'SDK go.mod contains a forbidden server or database dependency.' >&2 exit 1 fi (cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" list -mod=readonly -deps ./... >"$TASK_DEPS") if grep -Eq '^git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)(/|$)|github\.com/go-sql-driver/mysql$' "$TASK_DEPS"; then printf '%s\n' 'SDK dependency graph contains a forbidden server or database package.' >&2 grep -E 'git\.yuntuo\.hk/k2safe/orbit/(internal|model|platform|pulse|weave)|github\.com/go-sql-driver/mysql' "$TASK_DEPS" >&2 || true exit 1 fi (cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" test -race ./...) (cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" vet ./...) (cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" build ./...) TASK_PACKAGE_COUNT=$(cd "$TASK_SDK_DIR" && GOWORK=off "$TASK_GO" list ./... | wc -l | tr -d ' ') printf '{"sdk_module":"git.yuntuo.hk/k2safe/orbit/sdk/go","independent":true,"package_count":%s,"forbidden_dependencies":0}\n' "$TASK_PACKAGE_COUNT"