BIN := gowebdav
SRC := $(wildcard *.go) cmd/gowebdav/main.go

all: test cmd

cmd: ${BIN}

${BIN}: ${SRC}
	go build -o $@ ./cmd/gowebdav

test:
	go test -modfile=go_test.mod -v -short -cover ./...

api: .go/bin/godoc2md
	@sed '/^## API$$/,$$d' -i README.md
	@echo '## API' >> README.md
	@$< github.com/studio-b12/gowebdav | sed '/^$$/N;/^\n$$/D' |\
	sed '2d' |\
	sed 's/\/src\/github.com\/studio-b12\/gowebdav\//https:\/\/github.com\/studio-b12\/gowebdav\/blob\/master\//g' |\
	sed 's/\/src\/target\//https:\/\/github.com\/studio-b12\/gowebdav\/blob\/master\//g' |\
	sed 's/^#/##/g' >> README.md

check: .go/bin/gocyclo
	gofmt -w -s $(SRC)
	@echo
	.go/bin/gocyclo -over 15 .
	@echo
	go vet -modfile=go_test.mod ./...


.go/bin/godoc2md:
	@mkdir -p $(@D)
	@GOPATH="$(CURDIR)/.go" go install github.com/davecheney/godoc2md@latest

.go/bin/gocyclo:
	@mkdir -p $(@D)
	@GOPATH="$(CURDIR)/.go" go install github.com/fzipp/gocyclo/cmd/gocyclo@latest

clean:
	@rm -f ${BIN}

.PHONY: all cmd clean test api check