93 lines
2.4 KiB
Makefile
93 lines
2.4 KiB
Makefile
NPM?= npm
|
|
NPX?= npx
|
|
PRETTIER?= $(NPX) prettier
|
|
GO?= go
|
|
DOCKER?= docker
|
|
|
|
DOCKER_BUILD_FLAGS?=
|
|
DOCKER_BUILD= DOCKER_BUILDKIT=1 $(DOCKER) build $(DOCKER_BUILD_FLAGS)
|
|
|
|
DOCKER_COMPOSE= $(DOCKER) compose -f compose.yaml $(DOCKER_COMPOSE_FLAGS)
|
|
|
|
VERSION= 0.38.1
|
|
LDFLAGS= -ldflags "-X 'main.version=$(VERSION)' -X 'main.env=prod'"
|
|
GCFLAGS= -gcflags="-e"
|
|
|
|
GO_BUILD= CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) $(GO) build $(LDFLAGS) $(GCFLAGS)
|
|
GO_GENERATE= $(GO) generate
|
|
|
|
DOCKER_IMAGE_NAME= ghcr.io/getprobo/probo
|
|
DOCKER_TAG_NAME?= latest
|
|
|
|
PROBOD_BIN= bin/probod
|
|
PROBOD_SRC= cmd/probod/main.go
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
.PHONY: lint
|
|
lint: fmt-check vet
|
|
|
|
.PHONY: vet
|
|
vet:
|
|
$(GO) vet ./...
|
|
|
|
.PHONY: build
|
|
build: @probo/console bin/probod
|
|
|
|
.PHONY: docker-build
|
|
docker-build:
|
|
$(DOCKER_BUILD) --tag $(DOCKER_IMAGE_NAME):$(DOCKER_TAG_NAME) --file Dockerfile .
|
|
|
|
.PHONY: bin/probod
|
|
bin/probod: pkg/server/api/console/v1/schema/schema.go pkg/server/api/console/v1/types/types.go pkg/server/api/console/v1/v1_resolver.go vet
|
|
$(GO_BUILD) -o $(PROBOD_BIN) $(PROBOD_SRC)
|
|
|
|
.PHONY: @probo/console
|
|
@probo/console: NODE_ENV=production
|
|
@probo/console:
|
|
$(NPM) --workspace $@ run check
|
|
$(NPM) --workspace $@ run build
|
|
|
|
pkg/server/api/console/v1/schema/schema.go \
|
|
pkg/server/api/console/v1/types/types.go \
|
|
pkg/server/api/console/v1/v1_resolver.go: pkg/server/api/console/v1/gqlgen.yaml pkg/server/api/console/v1/schema.graphql
|
|
$(GO_GENERATE) ./pkg/server/api/console/v1
|
|
|
|
.PHONY: help
|
|
help: ## Show this help
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
|
|
.PHONY:dev
|
|
dev: ## Start the development server
|
|
parallel -j 2 --line-buffer ::: "gow -r=false run cmd/probod/main.go" "cd apps/console && npm run dev"
|
|
|
|
.PHONY: fmt
|
|
fmt: fmt-go ## Format Go code
|
|
|
|
.PHONY: fmt-go
|
|
fmt-go: ## Format Go code
|
|
go fmt ./...
|
|
|
|
.PHONY: clean
|
|
clean: ## Clean the project (node_modules and build artifacts)
|
|
$(RM) -rf bin/*
|
|
$(RM) -rf node_modules
|
|
$(RM) -rf apps/console/{dist,node_modules}
|
|
|
|
.PHONY: stack-up
|
|
stack-up: ## Start the docker stack as a deamon
|
|
$(DOCKER_COMPOSE) up -d
|
|
|
|
.PHONY: stack-down
|
|
stack-down: ## Stop the docker stack
|
|
$(DOCKER_COMPOSE) down
|
|
|
|
.PHONY: stack-ps
|
|
stack-ps: ## List the docker stack containers
|
|
$(DOCKER_COMPOSE) ps
|
|
|
|
.PHONY: psql
|
|
psql: ## Open a psql shell to the postgres container
|
|
$(DOCKER_COMPOSE) exec postgres psql -U probod -d probod
|