86 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
| # This Makefile is written as generic as possible.
 | |
| # Setting the variables in settings.sh and creating the paths in the repo makes this work.
 | |
| # See more: https://github.com/golift/application-builder
 | |
| 
 | |
| # Suck in our application information.
 | |
| IGNORED:=$(shell bash -c "source settings.sh ; env | grep -v BASH_FUNC | sed 's/=/:=/;s/^/export /' > .metadata.make")
 | |
| 
 | |
| # md2roff turns markdown into man files and html files.
 | |
| MD2ROFF_BIN=github.com/davidnewhall/md2roff@v0.0.1
 | |
| 
 | |
| # rsrc adds an ico file to a Windows exe file.
 | |
| RSRC_BIN=github.com/akavel/rsrc
 | |
| 
 | |
| # CI passes the version in. Local builds get it from the current git tag.
 | |
| ifeq ($(VERSION),)
 | |
| 	include .metadata.make
 | |
| else
 | |
| 	# Preserve the passed-in version & iteration (homebrew).
 | |
| 	_VERSION:=$(VERSION)
 | |
| 	_ITERATION:=$(ITERATION)
 | |
| 	include .metadata.make
 | |
| 	VERSION:=$(_VERSION)
 | |
| 	ITERATION:=$(_ITERATION)
 | |
| endif
 | |
| 
 | |
| # Makefile targets follow.
 | |
| 
 | |
| all: build
 | |
| 
 | |
| ####################
 | |
| ##### Sidecars #####
 | |
| ####################
 | |
| 
 | |
| # Build a man page from a markdown file using md2roff.
 | |
| # This also turns the repo readme into an html file.
 | |
| # md2roff is needed to build the man file and html pages from the READMEs.
 | |
| man: $(BINARY).1.gz
 | |
| $(BINARY).1.gz: md2roff
 | |
| 	# Building man page. Build dependency first: md2roff
 | |
| 	$(shell go env GOPATH)/bin/md2roff --manual $(BINARY) --version $(VERSION) --date "$(DATE)" examples/MANUAL.md
 | |
| 	gzip -9nc examples/MANUAL > $@
 | |
| 	mv examples/MANUAL.html $(BINARY)_manual.html
 | |
| 
 | |
| md2roff: $(shell go env GOPATH)/bin/md2roff
 | |
| $(shell go env GOPATH)/bin/md2roff:
 | |
| 	cd /tmp ; go get $(MD2ROFF_BIN) ; go install $(MD2ROFF_BIN)
 | |
| 
 | |
| # TODO: provide a template that adds the date to the built html file.
 | |
| readme: README.html
 | |
| README.html: md2roff
 | |
| 	# This turns README.md into README.html
 | |
| 	$(shell go env GOPATH)/bin/md2roff --manual $(BINARY) --version $(VERSION) --date "$(DATE)" README.md
 | |
| 
 | |
| rsrc: rsrc.syso
 | |
| rsrc.syso: init/windows/application.ico init/windows/manifest.xml $(shell go env GOPATH)/bin/rsrc
 | |
| 	$(shell go env GOPATH)/bin/rsrc -ico init/windows/application.ico -manifest init/windows/manifest.xml
 | |
| $(shell go env GOPATH)/bin/rsrc:
 | |
| 	cd /tmp ; go get $(RSRC_BIN) ; go install $(RSRC_BIN)@latest
 | |
| 
 | |
| build-and-release: export DOCKER_REGISTRY = ghcr.io
 | |
| build-and-release: export DOCKER_IMAGE_NAME = unpoller/unpoller
 | |
| build-and-release: export GPG_SIGNING_KEY = 
 | |
| 
 | |
| bulid-and-release: clean
 | |
| 	goreleaser release --clean
 | |
| 
 | |
| build: export DOCKER_REGISTRY = ghcr.io
 | |
| build: export DOCKER_IMAGE_NAME = unpoller/unpoller
 | |
| build: export GPG_SIGNING_KEY = 
 | |
| 
 | |
| build: clean
 | |
| 	goreleaser release --clean --skip-validate --skip-publish --skip-sign --debug
 | |
| 
 | |
| clean:
 | |
| 	git clean -xdf || true
 | |
| 	(docker images -f "dangling=true" -q | xargs docker rmi) || true
 | |
| 
 | |
| lint:
 | |
| 	golangci-lint run --fix
 | |
| 
 | |
| test:
 | |
| 	go test -timeout=30s ./...
 | |
| 
 | |
| integration-test:
 | |
| 	go test -timeout=30m -args=integration ./...
 |