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