diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..28938acf32 --- /dev/null +++ b/Makefile @@ -0,0 +1,67 @@ +IMAGE_REGISTRY ?= greptimedb +IMAGE_TAG ?= latest + +##@ Build + +.PHONY: build +build: ## Build debug version greptime. + cargo build + +.PHONY: release +release: ## Build release version greptime. + cargo build --release + +.PHONY: clean +clean: ## Clean the project. + cargo clean + +.PHONY: fmt +fmt: ## Format all the Rust code. + cargo fmt --all + +.PHONY: docker-image +docker-image: ## Build docker image. + docker build --network host -f docker/Dockerfile -t ${IMAGE_REGISTRY}:${IMAGE_TAG} . + +##@ Test + +.PHONY: unit-test +unit-test: ## Run unit test. + cargo test --workspace + +.PHONY: integration-test +integration-test: ## Run integation test. + cargo test integration + +.PHONY: sqlness-test +sqlness-test: ## Run sqlness test. + cargo run --bin sqlness-runner + +.PHONY: check +check: ## Cargo check all the targets. + cargo check --workspace --all-targets + +.PHONY: clippy +clippy: ## Check clippy rules. + cargo clippy --workspace --all-targets -- -D warnings -D clippy::print_stdout -D clippy::print_stderr + +.PHONY: fmt-check +fmt-check: ## Check code format. + cargo fmt --all -- --check + +##@ General + +# The help target prints out all targets with their descriptions organized +# beneath their categories. The categories are represented by '##@' and the +# target descriptions by '##'. The awk commands is responsible for reading the +# entire set of makefiles included in this invocation, looking for lines of the +# file as xyz: ## something, and then pretty-format the target and help. Then, +# if there's a line with ##@ something, that gets pretty-printed as a category. +# More info on the usage of ANSI control characters for terminal formatting: +# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters +# More info on the awk command: +# https://linuxcommand.org/lc3_adv_awk.php + +.PHONY: help +help: ## Display help messages. + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)