2026-01-15 23:33:40 +01:00
|
|
|
sources = $(shell find . -name '*.go' | grep -v cmd/treerack/docreflect.gen.go)
|
2025-10-31 20:31:14 +01:00
|
|
|
parsers = $(shell find . -name '*.treerack')
|
2026-01-15 23:33:40 +01:00
|
|
|
release_date = $(shell git show -s --format=%cs HEAD)
|
|
|
|
|
version = $(date)-$(shell git rev-parse --short HEAD)
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2018-01-28 19:01:55 +01:00
|
|
|
.PHONY: cpu.out
|
|
|
|
|
|
2017-06-25 17:51:08 +02:00
|
|
|
default: build
|
|
|
|
|
|
2017-11-05 03:48:38 +01:00
|
|
|
deps:
|
|
|
|
|
go get golang.org/x/tools/cmd/goimports
|
2017-11-05 04:08:08 +01:00
|
|
|
go get -t ./...
|
2017-11-05 03:48:38 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
imports: $(sources)
|
2018-01-05 19:06:10 +01:00
|
|
|
@echo imports
|
2025-10-31 20:31:14 +01:00
|
|
|
@goimports -w $(sources)
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2026-01-15 23:33:40 +01:00
|
|
|
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:
|
2018-01-05 19:06:10 +01:00
|
|
|
go build
|
2026-01-15 23:33:40 +01:00
|
|
|
go build -o .build/treerack ./cmd/treerack
|
2018-01-07 01:45:56 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
install: $(sources)
|
2018-01-07 01:45:56 +01:00
|
|
|
go install ./cmd/treerack
|
2018-01-05 19:06:10 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
head: $(sources) fmt
|
2018-01-05 19:06:10 +01:00
|
|
|
go run scripts/createhead.go -- \
|
|
|
|
|
char.go \
|
|
|
|
|
sequence.go \
|
|
|
|
|
choice.go \
|
|
|
|
|
idset.go \
|
|
|
|
|
results.go \
|
|
|
|
|
context.go \
|
|
|
|
|
nodehead.go \
|
|
|
|
|
syntaxhead.go \
|
|
|
|
|
> head.go
|
2018-01-09 03:53:20 +01:00
|
|
|
@gofmt -s -w head.go
|
2025-08-20 03:22:39 +02:00
|
|
|
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
|
2018-01-05 19:06:10 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
generate: $(sources) $(parsers) fmt head install
|
2018-01-07 01:45:56 +01:00
|
|
|
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
|
2019-01-27 16:08:39 +01:00
|
|
|
@mv self/self.go.next self/self.go
|
2018-01-05 19:06:10 +01:00
|
|
|
@gofmt -s -w self/self.go
|
|
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
regenerate: $(sources) $(parsers) fmt head install
|
2018-01-07 01:45:56 +01:00
|
|
|
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
|
2019-01-27 16:08:39 +01:00
|
|
|
@mv self/self.go.next self/self.go
|
2018-01-28 19:01:55 +01:00
|
|
|
go install ./cmd/treerack
|
2018-01-07 01:45:56 +01:00
|
|
|
treerack generate -export -package-name self < syntax.treerack > self/self.go.next
|
2019-01-27 16:08:39 +01:00
|
|
|
@mv self/self.go.next self/self.go
|
2018-01-05 19:06:10 +01:00
|
|
|
@gofmt -s -w self/self.go
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
check-generate: $(sources) $(parsers)
|
2018-01-09 03:53:20 +01:00
|
|
|
@echo checking head
|
2025-08-20 03:22:39 +02:00
|
|
|
@mv headexported.go headexported.go.backup
|
|
|
|
|
@go run scripts/createhead.go --exported -- \
|
2018-01-09 03:53:20 +01:00
|
|
|
char.go \
|
|
|
|
|
sequence.go \
|
|
|
|
|
choice.go \
|
|
|
|
|
idset.go \
|
|
|
|
|
results.go \
|
|
|
|
|
context.go \
|
|
|
|
|
nodehead.go \
|
|
|
|
|
syntaxhead.go \
|
2025-08-20 03:22:39 +02:00
|
|
|
> headexported.go
|
|
|
|
|
@gofmt -s -w headexported.go
|
|
|
|
|
@if ! diff headexported.go headexported.go.backup > /dev/null; then \
|
|
|
|
|
mv headexported.go.backup headexported.go; \
|
2018-01-09 03:53:20 +01:00
|
|
|
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
|
2019-01-27 16:08:39 +01:00
|
|
|
@mv self/self.go.next self/self.go
|
2018-01-09 03:53:20 +01:00
|
|
|
@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
|
2025-08-20 03:22:39 +02:00
|
|
|
@mv headexported.go.backup headexported.go
|
2018-01-09 03:53:20 +01:00
|
|
|
@mv self/self.go.backup self/self.go
|
|
|
|
|
|
2026-01-15 23:33:40 +01:00
|
|
|
.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
|
|
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
check: build $(parsers)
|
2017-11-05 03:28:36 +01:00
|
|
|
go test -test.short -run ^Test
|
2018-01-08 16:49:04 +01:00
|
|
|
go test ./cmd/treerack -test.short -run ^Test
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
checkall: build $(parsers)
|
2017-11-05 03:28:36 +01:00
|
|
|
go test
|
2018-01-08 16:49:04 +01:00
|
|
|
go test ./cmd/treerack
|
2017-10-29 16:47:03 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
.coverprofile: $(sources)
|
2017-11-05 03:28:36 +01:00
|
|
|
go test -coverprofile .coverprofile
|
|
|
|
|
|
|
|
|
|
cover: .coverprofile
|
|
|
|
|
go tool cover -func .coverprofile
|
|
|
|
|
|
2018-01-06 22:56:26 +01:00
|
|
|
showcover: .coverprofile
|
2017-11-05 03:28:36 +01:00
|
|
|
go tool cover -html .coverprofile
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
.coverprofile-cmd: $(sources)
|
2018-01-08 16:49:04 +01:00
|
|
|
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
|
2018-01-06 22:56:26 +01:00
|
|
|
publishcoverage: .coverprofile
|
2017-11-05 03:38:24 +01:00
|
|
|
curl -s https://codecov.io/bash -o codecov
|
2017-11-05 04:49:36 +01:00
|
|
|
bash codecov -Zf .coverprofile
|
2017-11-05 03:38:24 +01:00
|
|
|
|
2018-01-28 19:01:55 +01:00
|
|
|
cpu.out:
|
2017-07-30 02:35:51 +02:00
|
|
|
go test -v -run TestMMLFile -cpuprofile cpu.out
|
|
|
|
|
|
|
|
|
|
cpu: cpu.out
|
|
|
|
|
go tool pprof -top cpu.out
|
|
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
fmt: $(sources)
|
|
|
|
|
gofmt -w -s $(sources)
|
2017-11-05 03:28:36 +01:00
|
|
|
|
2025-10-31 20:31:14 +01:00
|
|
|
checkfmt: $(sources)
|
|
|
|
|
if [ "$$(gofmt -s -d $(sources))" != "" ]; then false; else true; fi
|
2017-11-05 05:07:20 +01:00
|
|
|
|
|
|
|
|
vet:
|
2018-01-08 16:49:04 +01:00
|
|
|
go vet ./...
|
2017-11-05 05:07:20 +01:00
|
|
|
|
2018-01-09 03:53:20 +01:00
|
|
|
precommit: fmt check-generate vet build checkall
|
2017-07-30 02:35:51 +02:00
|
|
|
|
|
|
|
|
clean:
|
2018-01-05 19:06:10 +01:00
|
|
|
rm -f *.test
|
|
|
|
|
rm -f cpu.out
|
|
|
|
|
rm -f .coverprofile
|
|
|
|
|
go clean -i ./...
|
2026-01-15 23:33:40 +01:00
|
|
|
rm -f .build/treerack
|
|
|
|
|
rm -f .build/treerack.1
|
|
|
|
|
rm -f cmd/treerack/docreflect.gen.go
|
|
|
|
|
rm -f cmd/treerack/readme.md
|
2017-11-05 03:45:15 +01:00
|
|
|
|
2018-01-06 22:56:26 +01:00
|
|
|
ci-trigger: deps checkfmt build checkall
|
2017-11-05 04:01:27 +01:00
|
|
|
ifeq ($(TRAVIS_BRANCH)_$(TRAVIS_PULL_REQUEST), master_false)
|
2018-01-06 22:56:26 +01:00
|
|
|
make publishcoverage
|
2017-11-05 04:01:27 +01:00
|
|
|
endif
|