add autogeneration of help target for Makefile

Will aggregate targets and comments behind the target, sort them by
target alphabetically and print the output. Removes requirement to
update help target everytime something changes. targets without comment
will not appear in help output.
This commit is contained in:
Alexander Hinrichs 2025-01-15 07:52:03 +01:00
parent 5335bf27fd
commit fdc6c4aac6
1 changed files with 8 additions and 10 deletions

View File

@ -7,27 +7,25 @@ GO_CLEAN = $(GO_CMD) clean
BUILD_DIR = build BUILD_DIR = build
BINARY = $(BUILD_DIR)/$(APP_NAME) BINARY = $(BUILD_DIR)/$(APP_NAME)
.PHONY: build .PHONY: all build help clean install
all: build all: build
build: build: ## Build the application
@echo "Building $(APP_NAME)..." @echo "Building $(APP_NAME)..."
$(GO_BUILD) -o $(BINARY) $(GO_BUILD) -o $(BINARY)
install: build install: build ## Install the application
@echo "Installing $(APP_NAME)..." @echo "Installing $(APP_NAME)..."
$(GO_INSTALL) $(GO_INSTALL)
clean: clean: ## Remove build artifacts
@echo "Cleaning up build artifacts..." @echo "Cleaning up build artifacts..."
$(GO_CLEAN) $(GO_CLEAN)
rm -f $(BINARY) rm -f $(BINARY)
help: help: ## Print the make targets
@echo "Makefile for $(APP_NAME)" @echo "Makefile for $(APP_NAME)"
@echo "Usage:" @echo "Targets:"
@echo " make build - Build the application" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@echo " make install - Install the application"
@echo " make clean - Remove build artifacts"
@echo " make - Default target (build)"