SHELL := /bin/sh GO_MODULE := git.toki-labs.com/toki/rara PROTO_ROOT := api/proto PROTO_FILE := $(PROTO_ROOT)/rara/v1/executor.proto PYTHON_ROOT := packages/python VENV := .venv VENV_READY := $(VENV)/.ready TOOLS_DIR := $(CURDIR)/.tools PROTOC_GEN_GO := $(TOOLS_DIR)/protoc-gen-go PROTOC_GEN_GO_GRPC := $(TOOLS_DIR)/protoc-gen-go-grpc SQLC := $(TOOLS_DIR)/sqlc DATABASE_URL ?= postgres://rara:rara@localhost:5432/rara?sslmode=disable .PHONY: all setup tools generate proto sqlc fmt test test-go test-python build \ python-sync db-up db-down migrate-up migrate-down migrate-status all: setup fmt test build setup: generate tools: $(PROTOC_GEN_GO) $(PROTOC_GEN_GO_GRPC) $(SQLC) generate: proto sqlc proto: $(VENV_READY) $(PROTOC_GEN_GO) $(PROTOC_GEN_GO_GRPC) mkdir -p gen/go $(PYTHON_ROOT)/src protoc -I $(PROTO_ROOT) \ --plugin=protoc-gen-go=$(PROTOC_GEN_GO) \ --plugin=protoc-gen-go-grpc=$(PROTOC_GEN_GO_GRPC) \ --go_out=gen/go --go_opt=paths=source_relative \ --go-grpc_out=gen/go --go-grpc_opt=paths=source_relative \ $(PROTO_FILE) $(VENV)/bin/python -m grpc_tools.protoc -I $(PROTO_ROOT) \ --python_out=$(PYTHON_ROOT)/src \ --grpc_python_out=$(PYTHON_ROOT)/src \ $(PROTO_FILE) sqlc: $(SQLC) $(SQLC) generate fmt: $(VENV_READY) gofmt -w $$(find apps packages gen -name '*.go' -type f 2>/dev/null) $(VENV)/bin/python -m ruff format $(PYTHON_ROOT)/src $(PYTHON_ROOT)/tests $(VENV)/bin/python -m ruff check --fix $(PYTHON_ROOT)/src $(PYTHON_ROOT)/tests test: test-go test-python test-go: go test ./... test-python: $(VENV_READY) PYTHONPATH=$(PYTHON_ROOT)/src $(VENV)/bin/python -m pytest $(PYTHON_ROOT)/tests build: mkdir -p bin go build -o bin/rara-control-plane ./apps/control-plane/cmd/control-plane go build -o bin/rara-rag-api ./apps/rag-api/cmd/rag-api go build -o bin/rara-worker ./apps/worker/cmd/worker python-sync: $(VENV_READY) $(VENV_READY): $(PYTHON_ROOT)/pyproject.toml python3 -m venv $(VENV) $(VENV)/bin/pip install --upgrade pip $(VENV)/bin/pip install -e '$(PYTHON_ROOT)[dev]' touch $(VENV_READY) $(PROTOC_GEN_GO): mkdir -p $(TOOLS_DIR) GOBIN=$(TOOLS_DIR) go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 $(PROTOC_GEN_GO_GRPC): mkdir -p $(TOOLS_DIR) GOBIN=$(TOOLS_DIR) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.1 $(SQLC): mkdir -p $(TOOLS_DIR) GOBIN=$(TOOLS_DIR) go install github.com/sqlc-dev/sqlc/cmd/sqlc@v1.31.1 db-up: docker compose -f deploy/compose.yaml up -d postgres db-down: docker compose -f deploy/compose.yaml down migrate-up: go run github.com/pressly/goose/v3/cmd/goose@v3.24.1 \ -dir db/migrations postgres '$(DATABASE_URL)' up migrate-down: go run github.com/pressly/goose/v3/cmd/goose@v3.24.1 \ -dir db/migrations postgres '$(DATABASE_URL)' down migrate-status: go run github.com/pressly/goose/v3/cmd/goose@v3.24.1 \ -dir db/migrations postgres '$(DATABASE_URL)' status