Files
qfixpt/Makefile
Ramiro Paz 0424e2ed79 makefile
2026-03-12 12:25:10 -03:00

139 lines
5.1 KiB
Makefile

# Copyright 2019 PingCAP, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# See the License for the specific language governing permissions and
# limitations under the License.
include Makefile.common
.PHONY: help all clean dev check checklist tidy
vendor:
go mod vendor
push: vendor ci check-dirty ## Push the current branch to remote server
git push origin $$(git rev-parse --abbrev-ref HEAD)
branch: ## Create a new branch and checkout it. Usage: make branch (interactive)
@./tools/branch.sh
dev: checklist check
# Note from Fede:
# See https://github.com/golang/go/issues/44129
# If issues run: go env -w GOFLAGS=-mod=mod
# Run swag just in case
ci: swag fmt tidy check ## Run formatters (could modify the code), checks and linters
check: check-static dependencies-check ## Run checks and linters
download-versions:
curl --url "https://app.quantex.com.ar/linter_version.txt" -o $(linter_version_file)
test: ## Run all the tests
go test ./...
VALID_ENV_TYPES := prod dev demo open-demo
check-env:
@if [ "$(filter $(e),$(VALID_ENV_TYPES))" != "$(e)" ]; then \
echo "\033[31mError: Invalid environment type $(e). Types can be: prod, dev, demo, open-demo"; \
exit 1; \
fi;
# set dev as default
$(eval e := dev)
print-version: check-env ## Print the version of the latest build
OUT_PATH=$(DEFAULT_OUT_PATH) tools/print-version.sh $(e)
build: check-env swag vendor only-build # Build a native version. Set e=environment: prod, dev, demo, open-demo
only-build: check-env
@echo "Building for $(e) environment..."
env OUT_PATH=$(DEFAULT_OUT_PATH) GOARCH=amd64 GOOS=linux tools/build.sh $(e)
linux-build: check-env swag # Build a linux version for prod environment. Set e=environment: prod, dev, demo, open-demo
env OUT_PATH=$(DEFAULT_OUT_PATH) GOARCH=amd64 GOOS=linux tools/build.sh $(e)
deploy: check-env # Deploy to remote server. Set e=environment: prod, dev, demo, open-demo; s=serverName; i=instance; e.g. make deploy e=dev s=nonprodFix i=qfixpt
make build e=$(e) && qscp build/out/distribution/qfixdpl.gz $(s):/home/quantex/qfixtb/$(i)/
fmt: download-versions # Apply the Go formatter to the code
cd tools/check; unset GOPATH; GOBIN=$$PWD/../bin go install mvdan.cc/gofumpt@$(call get_version,gofumpt);
@echo "running fmt..."
@echo $(GIT_TREE_STATE)
@echo "> running gofumpt..."
@tools/bin/gofumpt -l -w main.go 2>&1
@tools/bin/gofumpt -l -w $(FILES) 2>&1
swag: download-versions
@echo "installing swag..."
cd tools/check; unset GOPATH; GOBIN=$$PWD/../bin go install github.com/swaggo/swag/cmd/swag@$(call get_version,swag);
@echo "running swag..."
rm -f src/client/api/rest/docs/swagger.json
rm -f src/client/api/rest/docs/swagger.yaml
rm -f src/client/api/rest/docs/docs.go
mkdir -p src/client/api/rest/docs
echo "package docs" > src/client/api/rest/docs/docs.go # This empty file is needed for the initial build. Then is overwritten by Swag.
tools/bin/swag init --parseDependency -g server.go -d src/client/api/rest -o src/client/api/rest/docs/
check-static: download-versions
@echo "installing golangci-lint..."
cd tools/check; unset GOPATH; GOBIN=$$PWD/../bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(call get_version,golangci-lint);
@echo "running golangci-lint..."
@echo $$($(PACKAGE_DIRECTORIES))
tools/bin/golangci-lint run -v -c tools/check/golangci.yml --timeout 5m0s ./...
check-dirty:
$(if $(filter dirty,$(GIT_TREE_STATE)), $(error git state is not clean <$(GIT_TREE_STATE)>))
dependencies-check: download-versions
@echo "installing govulncheck..."
cd tools/check; unset GOPATH; GOBIN=$$PWD/../bin go install golang.org/x/vuln/cmd/govulncheck@$(call get_version,govulncheck);
@echo "running govulncheck..."
@tools/bin/govulncheck -show verbose ./...
gogenerate: download-versions
@echo "installing go-enum..."
cd tools/check; unset GOPATH; GOBIN=$$PWD/../bin go install github.com/abice/go-enum@$(call get_version,go-enum);
@echo "running go generate ./.."
./tools/check/check-gogenerate.sh
tidy:
@echo "running go mod tidy..."
./tools/check/check-tidy.sh
server_coverage:
ifeq ($(TARGET), "")
$(GOBUILDCOVERAGE) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(COVERAGE_SERVER_LDFLAGS) $(CHECK_FLAG)' -o ../bin/bitlab-coverage
else
$(GOBUILDCOVERAGE) $(RACE_FLAG) -ldflags '$(LDFLAGS) $(COVERAGE_SERVER_LDFLAGS) $(CHECK_FLAG)' -o '$(TARGET)'
endif
checklist:
cat checklist.md
linter_version_file = .linter_version.txt
define get_version
$(shell grep "^$(1):" $(linter_version_file) | cut -d: -f2 | tr -d ' ')
endef
init: ## Install dependencies to run the project
make swag
make gogenerate
go install ./...
# Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' Makefile | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help