1
0
treerack/Makefile

176 lines
4.3 KiB
Makefile

sources = $(shell find . -name '*.go' | grep -v cmd/treerack/docreflect.gen.go)
parsers = $(shell find . -name '*.treerack')
release_date = $(shell git show -s --format=%cs HEAD)
version = $(date)-$(shell git rev-parse --short HEAD)
.PHONY: cpu.out
default: build
deps:
go get golang.org/x/tools/cmd/goimports
go get -t ./...
imports: $(sources)
@echo imports
@goimports -w $(sources)
cmd/treerack/docreflect.gen.go: $(sources)
go run scripts/docreflect.go > .build/docreflect.gen.go && \
mv .build/docreflect.gen.go cmd/treerack || \
rm .build/docreflect.gen.go
build: $(sources) cmd/treerack/readme.md cmd/treerack/docreflect.gen.go .build/treerack .build/treerack.1
.build/treerack:
go build
go build -o .build/treerack ./cmd/treerack
install: $(sources)
go install ./cmd/treerack
head: $(sources) fmt
go run scripts/createhead.go -- \
char.go \
sequence.go \
choice.go \
idset.go \
results.go \
context.go \
nodehead.go \
syntaxhead.go \
> head.go
@gofmt -s -w head.go
go run scripts/createhead.go --exported -- \
char.go \
sequence.go \
choice.go \
idset.go \
results.go \
context.go \
nodehead.go \
syntaxhead.go \
> headexported.go
@gofmt -s -w headexported.go
generate: $(sources) $(parsers) fmt head install
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
@mv self/self.go.next self/self.go
@gofmt -s -w self/self.go
regenerate: $(sources) $(parsers) fmt head install
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
@mv self/self.go.next self/self.go
go install ./cmd/treerack
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
@mv self/self.go.next self/self.go
@gofmt -s -w self/self.go
check-generate: $(sources) $(parsers)
@echo checking head
@mv headexported.go headexported.go.backup
@go run scripts/createhead.go --exported -- \
char.go \
sequence.go \
choice.go \
idset.go \
results.go \
context.go \
nodehead.go \
syntaxhead.go \
> headexported.go
@gofmt -s -w headexported.go
@if ! diff headexported.go headexported.go.backup > /dev/null; then \
mv headexported.go.backup headexported.go; \
echo head does not match; \
false; \
fi
@echo checking self
@mv self/self.go self/self.go.backup
@treerack generate -export -package-name self < syntax.treerack > self/self.go.next
@mv self/self.go.next self/self.go
@gofmt -s -w self/self.go
@if ! diff self/self.go self/self.go.backup > /dev/null; then \
mv self/self.go.backup self/self.go; \
echo self does not match; \
false; \
fi
@echo ok
@mv headexported.go.backup headexported.go
@mv self/self.go.backup self/self.go
.build:
mkdir -p .build
cmd/treerack/readme.md: $(sources) cmd/treerack/docreflect.gen.go
go run scripts/cmdreadme.go ./cmd/treerack > cmd/treerack/readme.md || \
rm cmd/treerack/readme.md
.build/treerack.1: $(sources) cmd/treerack/docreflect.gen.go
go run scripts/man.go $(version) $(release_date) > .build/treerack.1 || \
rm .build/treerack.1
check: build $(parsers)
go test -test.short -run ^Test
go test ./cmd/treerack -test.short -run ^Test
checkall: build $(parsers)
go test
go test ./cmd/treerack
.coverprofile: $(sources)
go test -coverprofile .coverprofile
cover: .coverprofile
go tool cover -func .coverprofile
showcover: .coverprofile
go tool cover -html .coverprofile
.coverprofile-cmd: $(sources)
go test ./cmd/treerack -coverprofile .coverprofile-cmd
cover-cmd: .coverprofile-cmd
go tool cover -func .coverprofile-cmd
showcover-cmd: .coverprofile-cmd
go tool cover -html .coverprofile-cmd
# command line interface not included
publishcoverage: .coverprofile
curl -s https://codecov.io/bash -o codecov
bash codecov -Zf .coverprofile
cpu.out:
go test -v -run TestMMLFile -cpuprofile cpu.out
cpu: cpu.out
go tool pprof -top cpu.out
fmt: $(sources)
gofmt -w -s $(sources)
checkfmt: $(sources)
if [ "$$(gofmt -s -d $(sources))" != "" ]; then false; else true; fi
vet:
go vet ./...
precommit: fmt check-generate vet build checkall
clean:
rm -f *.test
rm -f cpu.out
rm -f .coverprofile
go clean -i ./...
rm -f .build/treerack
rm -f .build/treerack.1
rm -f cmd/treerack/docreflect.gen.go
rm -f cmd/treerack/readme.md
ci-trigger: deps checkfmt build checkall
ifeq ($(TRAVIS_BRANCH)_$(TRAVIS_PULL_REQUEST), master_false)
make publishcoverage
endif