diff --git a/Makefile b/Makefile index 5166b99..afe873f 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,20 @@ OUTPUT_GOFLOW_LIGHT_NF := $(DIST_DIR)goflow-netflow-$(GOFLOW_VERSION)-$(GOOS) OUTPUT_GOFLOW_LIGHT_NFV5 := $(DIST_DIR)goflow-nflegacy-$(GOFLOW_VERSION)-$(GOOS)-$(ARCH)$(EXTENSION) .PHONY: all -all: test-race vet test +all: test-race vet test ## Run all tests and checks. + +.PHONY: help +help: ## Display this help. + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +##@ Development + +.PHONY: fmt +fmt: ## Run go fmt against code. + go fmt ./... + +.PHONY: vet + .PHONY: proto proto: @@ -30,44 +43,44 @@ proto: protoc --go_out=. --plugin=$(PROTOCPATH)protoc-gen-go pb/*.proto .PHONY: test -test: +test: ## Run unit tests. @echo testing code go test ./... .PHONY: vet -vet: +vet: ## Run go vet to check for potential issues. @echo checking code is vetted go vet $(shell go list ./...) .PHONY: test-race -test-race: +test-race: ## Run tests with race condition detection. @echo testing code for races go test -race ./... .PHONY: prepare -prepare: +prepare: ## Prepare necessary directories for build output. mkdir -p $(DIST_DIR) .PHONY: clean -clean: +clean: ## Clean build artifacts. rm -rf $(DIST_DIR) .PHONY: build-goflow -build-goflow: prepare +build-goflow: prepare ## Build the goflow binary. go build -ldflags $(LDFLAGS) -o $(OUTPUT_GOFLOW) cmd/goflow/goflow.go +.PHONY: docker-goflow +docker-goflow: ## Build the Docker image for goflow. + docker build -t $(DOCKER_REPO)$(GOFLOW_NAME):$(GOFLOW_VERSION) --build-arg LDFLAGS=$(LDFLAGS) -f Dockerfile . + .PHONY: build-goflow-light -build-goflow-light: prepare +build-goflow-light: prepare ## Build the lightweight goflow binaries. go build -ldflags $(LDFLAGS) -o $(OUTPUT_GOFLOW_LIGHT_SFLOW) cmd/csflow/csflow.go go build -ldflags $(LDFLAGS) -o $(OUTPUT_GOFLOW_LIGHT_NF) cmd/cnetflow/cnetflow.go go build -ldflags $(LDFLAGS) -o $(OUTPUT_GOFLOW_LIGHT_NFV5) cmd/cnflegacy/cnflegacy.go -.PHONY: docker-goflow -docker-goflow: - docker build -t $(DOCKER_REPO)$(GOFLOW_NAME):$(GOFLOW_VERSION) --build-arg LDFLAGS=$(LDFLAGS) -f Dockerfile . - .PHONY: package-deb-goflow -package-deb-goflow: prepare +package-deb-goflow: prepare ## Package goflow as a Debian package. fpm -s dir -t deb -n $(GOFLOW_NAME) -v $(VERSION_PKG) \ --description "$(DESCRIPTION)" \ --url "$(URL)" \ @@ -80,7 +93,7 @@ package-deb-goflow: prepare package/goflow.env=/etc/default/goflow .PHONY: package-rpm-goflow -package-rpm-goflow: prepare +package-rpm-goflow: prepare ## Package goflow as an RPM package. fpm -s dir -t rpm -n $(GOFLOW_NAME) -v $(VERSION_PKG) \ --description "$(DESCRIPTION)" \ --url "$(URL)" \