github.com/jwilson-ts/prototool@v1.3.0/Makefile (about) 1 SRCS := $(shell find . -name '*.go' | grep -v ^\.\/vendor\/ | grep -v ^\.\/example\/ | grep -v \/gen\/grpcpb\/) 2 PKGS := $(shell go list ./... | grep -v github.com\/uber\/prototool\/example | grep -v \/gen\/grpcpb) 3 BINS := github.com/uber/prototool/internal/cmd/prototool 4 5 DOCKER_IMAGE := golang:1.10.3 6 7 .PHONY: all 8 all: lint cover 9 10 .PHONY: ci 11 ci: init lint codecov 12 13 .PHONY: init 14 init: 15 go get github.com/Masterminds/glide 16 rm -rf vendor 17 glide install 18 19 .PHONY: vendor 20 vendor: 21 go get github.com/Masterminds/glide 22 rm -rf vendor 23 glide update 24 25 .PHONY: install 26 install: 27 go install \ 28 -ldflags "-X 'github.com/uber/prototool/internal/vars.GitCommit=$(shell git rev-list -1 HEAD)' -X 'github.com/uber/prototool/internal/vars.BuiltTimestamp=$(shell date -u)'" \ 29 $(BINS) 30 31 .PHONY: license 32 license: 33 @go install ./vendor/go.uber.org/tools/update-license 34 update-license $(SRCS) 35 36 .PHONY: golden 37 golden: install 38 for file in $(shell find internal/cmd/testdata/format -name '*.proto.golden'); do \ 39 rm -f $${file}; \ 40 done 41 for file in $(shell find internal/cmd/testdata/format -name '*.proto'); do \ 42 prototool format $${file} > $${file}.golden || true; \ 43 done 44 for file in $(shell find internal/cmd/testdata/format-fix -name '*.proto.golden'); do \ 45 rm -f $${file}; \ 46 done 47 for file in $(shell find internal/cmd/testdata/format-fix -name '*.proto'); do \ 48 prototool format --fix $${file} > $${file}.golden || true; \ 49 done 50 51 .PHONY: example 52 example: install 53 @go install ./vendor/github.com/gogo/protobuf/protoc-gen-gogoslick 54 @go install ./vendor/github.com/golang/protobuf/protoc-gen-go 55 @go install ./vendor/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway 56 @go install ./vendor/go.uber.org/yarpc/encoding/protobuf/protoc-gen-yarpc-go 57 rm -rf example/gen 58 prototool all example/idl/uber 59 touch ./example/gen/proto/go/foo/.nocover 60 touch ./example/gen/proto/go/sub/.nocover 61 go build ./example/gen/proto/go/foo 62 go build ./example/gen/proto/go/sub 63 go build ./example/cmd/excited/main.go 64 prototool lint etc/style 65 66 .PHONY: internalgen 67 internalgen: install 68 prototool generate internal/cmd/testdata/grpc 69 rm -f etc/config/example/prototool.yaml 70 prototool config init etc/config/example --uncomment 71 72 .PHONY: generate 73 generate: license golden example internalgen 74 75 .PHONY: checknodiffgenerated 76 checknodiffgenerated: 77 $(eval CHECKNODIFFGENERATED_PRE := $(shell mktemp -t checknodiffgenerated_pre.XXXXX)) 78 $(eval CHECKNODIFFGENERATED_POST := $(shell mktemp -t checknodiffgenerated_post.XXXXX)) 79 $(eval CHECKNODIFFGENERATED_DIFF := $(shell mktemp -t checknodiffgenerated_diff.XXXXX)) 80 git status --short > $(CHECKNODIFFGENERATED_PRE) 81 $(MAKE) generate 82 git status --short > $(CHECKNODIFFGENERATED_POST) 83 @diff $(CHECKNODIFFGENERATED_PRE) $(CHECKNODIFFGENERATED_POST) > $(CHECKNODIFFGENERATED_DIFF) || true 84 @[ ! -s "$(CHECKNODIFFGENERATED_DIFF)" ] || (echo "make generate produced a diff, make sure to check these in:" | cat - $(CHECKNODIFFGENERATED_DIFF) && false) 85 86 .PHONY: golint 87 golint: 88 @go install ./vendor/github.com/golang/lint/golint 89 for file in $(SRCS); do \ 90 golint $${file}; \ 91 if [ -n "$$(golint $${file})" ]; then \ 92 exit 1; \ 93 fi; \ 94 done 95 96 .PHONY: vet 97 vet: 98 go vet $(PKGS) 99 100 .PHONY: 101 errcheck: 102 @go install ./vendor/github.com/kisielk/errcheck 103 errcheck -ignoretests $(PKGS) 104 105 .PHONY: staticcheck 106 staticcheck: 107 @go install ./vendor/honnef.co/go/tools/cmd/staticcheck 108 staticcheck --tests=false $(PKGS) 109 110 .PHONY: unused 111 unused: 112 @go install ./vendor/honnef.co/go/tools/cmd/unused 113 unused --tests=false $(PKGS) 114 115 .PHONY: checklicense 116 checklicense: install 117 @go install ./vendor/go.uber.org/tools/update-license 118 @echo update-license --dry $(SRCS) 119 @if [ -n "$$(update-license --dry $(SRCS))" ]; then \ 120 echo "These files need to have their license updated by running make license:"; \ 121 update-license --dry $(SRCS); \ 122 exit 1; \ 123 fi 124 125 .PHONY: lint 126 lint: checknodiffgenerated golint vet errcheck staticcheck unused checklicense 127 128 .PHONY: test 129 test: 130 go test -race $(PKGS) 131 132 .PHONY: cover 133 cover: 134 @go install ./vendor/golang.org/x/tools/cmd/cover 135 @go install ./vendor/github.com/wadey/gocovmerge 136 ./etc/bin/cover.sh $(PKGS) 137 go tool cover -html=coverage.txt -o cover.html 138 go tool cover -func=coverage.txt | grep total 139 140 .PHONY: codecov 141 codecov: SHELL := /bin/bash 142 codecov: cover 143 bash <(curl -s https://codecov.io/bash) -c -f coverage.txt 144 145 .PHONY: releasegen 146 releasegen: internalgen 147 docker run \ 148 --volume "$(CURDIR):/go/src/github.com/uber/prototool" \ 149 --workdir "/go/src/github.com/uber/prototool" \ 150 $(DOCKER_IMAGE) \ 151 bash -x etc/bin/releasegen.sh 152 153 .PHONY: brewgen 154 brewgen: 155 sh etc/bin/brewgen.sh 156 157 .PHONY: releaseinstall 158 releaseinstall: releasegen releaseclean 159 tar -C /usr/local --strip-components 1 -xzf release/prototool-$(shell uname -s)-$(shell uname -m).tar.gz 160 161 .PHONY: releaseclean 162 releaseclean: 163 rm -f /usr/local/bin/prototool 164 rm -f /usr/local/etc/bash_completion.d/prototool 165 rm -f /usr/local/etc/zsh_completion.d/prototool 166 rm -f /usr/local/share/man/man1/prototool* 167 168 .PHONY: clean 169 clean: 170 go clean -i $(PKGS) 171 git clean -xdf --exclude vendor 172 173 .PHONY: cleanall 174 cleanall: clean releaseclean