CONFIG=config.json TARGET=ngxconf NGXCONF=nginx.conf GENERATED=templates.go SOURCES=$(wildcard *.go) $(GENERATED) all: build config @echo "Run 'make preview' to view the rendered template or 'make save' to save it in $(NGXCONF)" build: $(TARGET) $(TARGET): $(SOURCES) @echo "Generating Go sources..." @go generate || echo "Failed. We need at least Go version 1.4 to generate code. $(TARGET) still works but you ned to specify the full path to your template directory." go build config: $(CONFIG) $(CONFIG): $(TARGET) ./$(TARGET) -genconfig $(CONFIG) @echo "" save: build @if [ ! -f $(CONFIG) ]; then make config; fi ./$(TARGET) -config $(CONFIG) > $(NGXCONF) preview: build @if [ ! -f $(CONFIG) ]; then make config; fi @./$(TARGET) -config $(CONFIG) edit: $(CONFIG) $(EDITOR) $(CONFIG) clean: $(RM) $(RMFLAGS) $(CONFIG) $(TARGET) $(NGXCONF) $(GENERATED) @echo "package main" > $(GENERATED); \ echo "// To be replaced by go generate" >> $(GENERATED); \ echo "func isGenerated() bool { return false }" >> $(GENERATED); \ echo "func getTemplate() string { return \"\" }" >> $(GENERATED) help: @echo "Generates a standard nginx config file" @echo "make build -- compile" @echo "make config -- generate config" @echo "make save -- render template and save in $(NGXCONF)" @echo "make preview -- preview rendered template" @echo "make edit -- edit $(CONFIG)" @echo "make clean -- removes generated files"