PACKAGES := activities assets game server client dummy-ui draftsim/server draftsim/client ui SHELL := bash APPS := server client dummy-ui draftsim/client draftsim/server OBJS := $(foreach app,$(APPS),$(app)/$(app)) WASM := client/client.wasm webtools/webtools.wasm dummy-ui/dummy-ui.wasm draftsim/client/client.wasm GOFMT ?= gofumpt -l -w . .PHONY: all fmt test check $(OBJS) $(WASM) all: $(OBJS) $(WASM) .PHONY: client server dummy-ui draftsim client: client/client server: server/server dummy-ui: dummy-ui/dummy-ui draftsim: draftsim/server draftsim/client $(OBJS): @echo Building $(@F) @pushd $(@D) >/dev/null && go build && popd >/dev/null $(WASM): @echo Building $(@F) ... @pushd $(@D) >/dev/null && env GOOS=js GOARCH=wasm go build -o $(@F) && popd >/dev/null fmt: @set -e; for package in $(PACKAGES) webtools; do \ pushd $$package >/dev/null && $(GOFMT); popd >/dev/null; \ done test: @STATUS=0; \ for package in $(PACKAGES); do \ if pushd "$$package" >/dev/null; then \ go test; \ status="$$?"; \ if [ "$$status" -ne 0 ]; then STATUS="$$status"; fi; \ popd >/dev/null; \ fi; \ done; \ exit "$$STATUS" check: @STATUS=0; \ for package in $(PACKAGES); do \ if pushd "$$package" >/dev/null; then \ golangci-lint run; \ status="$$?"; \ if [ "$$status" -ne 0 ]; then STATUS="$$status"; fi; \ popd >/dev/null; \ fi; \ done; \ exit "$$STATUS"