GO ?= go

.PHONY: fmt test vet build integration sdk-check protocol-check schedule-backlog
fmt:
	$(GO) fmt ./...
	cd sdk/go && $(GO) fmt ./...
	cd examples/result-inbox && GOWORK=off $(GO) fmt ./...
	cd examples/task-outbox && GOWORK=off $(GO) fmt ./...

test:
	$(GO) test -race ./...
	cd sdk/go && $(GO) test -race ./...
	cd examples/result-inbox && GOWORK=off $(GO) test -race ./...
	cd examples/task-outbox && GOWORK=off $(GO) test -race ./...

vet:
	$(GO) vet ./...
	cd sdk/go && $(GO) vet ./...
	cd examples/result-inbox && GOWORK=off $(GO) vet ./...
	cd examples/task-outbox && GOWORK=off $(GO) vet ./...

build:
	$(GO) build -o bin/orbit ./cmd/orbit
	$(GO) build -o bin/orbit-migrate ./cmd/orbit-migrate
	$(GO) build -o bin/orbit-admin ./cmd/orbit-admin
	cd examples/result-inbox && GOWORK=off $(GO) build -o ../../bin/orbit-inbox-example ./cmd/receiver
	cd examples/task-outbox && GOWORK=off $(GO) build -o ../../bin/orbit-outbox-example ./cmd/sender

integration:
	./scripts/test-mysql.sh

sdk-check:
	./scripts/test-sdk-isolation.sh

protocol-check:
	./scripts/test-protocol-compatibility.sh

# Runs the bounded, intentionally incomplete persistent backlog rehearsal in an isolated MySQL.
schedule-backlog:
	./scripts/test-schedule-backlog.sh
