GOBIN := $(shell go env GOPATH)/bin
LEXGEN := go run github.com/bluesky-social/indigo/cmd/lexgen --build-file lexicon-build-config.json lexicons

# Generate Go types + CBOR encoders from the atproto lexicons in ./lexicons.
#
# Requires goimports:  go install golang.org/x/tools/cmd/goimports@latest
.PHONY: lexgen
lexgen:
	mkdir -p api/lichess /tmp/atproto
	rm -f api/lichess/*.go
	$(LEXGEN)
	perl -i -pe 's{^(\s*)(lexutil\.RegisterType)}{$$1// $$2}' api/lichess/*.go
	$(GOBIN)/goimports -w ./api/lichess
	CGO_ENABLED=0 go run ./cmd/cborgen/
	$(LEXGEN)
	$(GOBIN)/goimports -w ./api/lichess

# Generate the TypeScript client API in client/src/lib/lexicon.
.PHONY: lexgen-ts
lexgen-ts:
	cd client && npm run lexgen

.PHONY: lexgen-all
lexgen-all: lexgen lexgen-ts
