diff --git a/.travis.yml b/.travis.yml index 0d0ea741..0f0c1594 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,4 +53,4 @@ jobs: on: tags: true api_key: - secure: "AULDRJQ8olD4R3v35sCnSZx136DnJnqMkX3ANNC/gosQhI+sFViW7BT0kaQBcIqBjF3jrik4Zm4BAW0VSZruwahD+pxjf/uroYAraMaFohw5SCL+CIY4qgNM/kkkZXTAP5DvPIOKEmXY8FfL1ZD0C6B8OKabRjh2rxuoh+enjflrA/B6B98yqo/NufCgfqfhwSK7xnh7kY4DCwfpQ80fQFzwj1BQQ5bBpP7tTVpZVqnbfSTSUoV8pX+2Ef/+t3KgYWx11+zkML9GbLevf7SbaMP9qceLvSW2npjzK1vCdQEtKp5OEuvaqsHXpdV58EdQx01zt5RSKSj/EcVaASwt2dbR10kTV7hBTvNqmvStjjKavCKzyohHG5s8VOrTXnIezuxXe1l9P9teIktY+uFClsC9t8jkQZZlVYn8brWMp+oU1VtVgYQRiF4p08IxUUS5DtZ1ZML9Yqh0am1lo2EFRydOBiIVoG2cSO8IbvDYYhIUrfc+pZ01vBV+sp+5EGmNp/7wgLwNSzoAgjh6BRLZO7irICcd579L4ZLWYX8k7/oXFDb8ABjzl0/Fk4K6EL1TTQzJaabxVAT1SI7b2PnqhJx7f5xPbNdNIQAQ/+I0sN7hpIJ0o/VaqObGKIdJeZSWISQ5TTlK+TtbucAtNaSgw0rhNYrIslK2bfgODa6MfJc=" + secure: "TTOf5iX7bX9i2t5S8RoYdQ4w07vcc5gRoO2B7DzwmLsaMhWRi/bwOh7A2b77apaT1Mc6YytYlkqEqve/W8YTeWhJRZSevtN1GmSv1Hkryu8t5b53SFba1ka0/FVG0qTO0d7NT5JUx8C7Yw1ZZhfW2oJCt9nZWIYT/5JFLm21prdOHTsUIc7XUnXa5etFAbMxMU8c6sz42m2zEkfTgv59DNeaF754W40pDWsayI1zjZYiHImdSdueNzNrhaSIp8AYF5dVXJgYAltYx38Af6XY77sJ+/jpCYONA8BDYygppibdtwFsVjLr1sXv7c2p1p8yZNblj37RyH3DYHCki8pXyZm87jqATiNJromvFVx5oGDpNzd+jCHHidrb7+cOIEepYE8DKMh0+q5N/hVJWR3nUzVeerfgxuNiGxYbQtxz5ZPXUFCkBLrj38fOuxPeupJdbB8LCRdljHEcoDMCSlHMDyCFseZwBSAkgRGMuVO7LDi2fa/ykL3rugG9oOnUvRjWzAAyp9TRKNvSvk7xIce6va7TfzA9Baah2eHuS07XnZDWgfL04mToiuWnZs01wPNf5HsPjgKxPwwGWYP+S3zIdWwX8fyrxfriguu6xSBytM7VDhtPD/sFXluVGIEf5tEsWL+pI9nfEMYxsaDgIE8MTtj37miKuy9aSTOOeiYBVXs=" diff --git a/.traviskey b/.traviskey index d5f12421..6f46b24a 100644 --- a/.traviskey +++ b/.traviskey @@ -1 +1 @@ -AULDRJQ8olD4R3v35sCnSZx136DnJnqMkX3ANNC/gosQhI+sFViW7BT0kaQBcIqBjF3jrik4Zm4BAW0VSZruwahD+pxjf/uroYAraMaFohw5SCL+CIY4qgNM/kkkZXTAP5DvPIOKEmXY8FfL1ZD0C6B8OKabRjh2rxuoh+enjflrA/B6B98yqo/NufCgfqfhwSK7xnh7kY4DCwfpQ80fQFzwj1BQQ5bBpP7tTVpZVqnbfSTSUoV8pX+2Ef/+t3KgYWx11+zkML9GbLevf7SbaMP9qceLvSW2npjzK1vCdQEtKp5OEuvaqsHXpdV58EdQx01zt5RSKSj/EcVaASwt2dbR10kTV7hBTvNqmvStjjKavCKzyohHG5s8VOrTXnIezuxXe1l9P9teIktY+uFClsC9t8jkQZZlVYn8brWMp+oU1VtVgYQRiF4p08IxUUS5DtZ1ZML9Yqh0am1lo2EFRydOBiIVoG2cSO8IbvDYYhIUrfc+pZ01vBV+sp+5EGmNp/7wgLwNSzoAgjh6BRLZO7irICcd579L4ZLWYX8k7/oXFDb8ABjzl0/Fk4K6EL1TTQzJaabxVAT1SI7b2PnqhJx7f5xPbNdNIQAQ/+I0sN7hpIJ0o/VaqObGKIdJeZSWISQ5TTlK+TtbucAtNaSgw0rhNYrIslK2bfgODa6MfJc= +TTOf5iX7bX9i2t5S8RoYdQ4w07vcc5gRoO2B7DzwmLsaMhWRi/bwOh7A2b77apaT1Mc6YytYlkqEqve/W8YTeWhJRZSevtN1GmSv1Hkryu8t5b53SFba1ka0/FVG0qTO0d7NT5JUx8C7Yw1ZZhfW2oJCt9nZWIYT/5JFLm21prdOHTsUIc7XUnXa5etFAbMxMU8c6sz42m2zEkfTgv59DNeaF754W40pDWsayI1zjZYiHImdSdueNzNrhaSIp8AYF5dVXJgYAltYx38Af6XY77sJ+/jpCYONA8BDYygppibdtwFsVjLr1sXv7c2p1p8yZNblj37RyH3DYHCki8pXyZm87jqATiNJromvFVx5oGDpNzd+jCHHidrb7+cOIEepYE8DKMh0+q5N/hVJWR3nUzVeerfgxuNiGxYbQtxz5ZPXUFCkBLrj38fOuxPeupJdbB8LCRdljHEcoDMCSlHMDyCFseZwBSAkgRGMuVO7LDi2fa/ykL3rugG9oOnUvRjWzAAyp9TRKNvSvk7xIce6va7TfzA9Baah2eHuS07XnZDWgfL04mToiuWnZs01wPNf5HsPjgKxPwwGWYP+S3zIdWwX8fyrxfriguu6xSBytM7VDhtPD/sFXluVGIEf5tEsWL+pI9nfEMYxsaDgIE8MTtj37miKuy9aSTOOeiYBVXs= diff --git a/Dockerfile b/Dockerfile index b5a898d9..87786130 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,7 @@ ENV PATH /go/bin:/usr/local/go/bin:$PATH ENV GOPATH /go RUN apk add --no-cache \ + bash \ ca-certificates COPY . /go/src/github.com/genuinetools/reg diff --git a/Makefile b/Makefile index 7e990900..6d859f8e 100644 --- a/Makefile +++ b/Makefile @@ -35,10 +35,6 @@ dind: stop-dind ## Starts a docker-in-docker container for running the tests wit stop-dind: ## Stops the docker-in-docker container. @docker rm -f $(NAME)-dind >/dev/null 2>&1 || true -.PHONY: image-dev -image-dev: - docker build --rm --force-rm -f Dockerfile.dev -t $(REGISTRY)/$(NAME):dev . - .PHONY: dtest dtest: image-dev ## Run the tests in a docker container. docker run --rm -i $(DOCKER_FLAGS) \ diff --git a/basic.mk b/basic.mk index 046d479d..61567b5b 100644 --- a/basic.mk +++ b/basic.mk @@ -1,3 +1,6 @@ +# Set the shell +SHELL := /bin/bash + # Set an output prefix, which is the local directory if not specified PREFIX?=$(shell pwd) @@ -56,12 +59,16 @@ all: clean build fmt lint test staticcheck vet install ## Runs a clean, build, f .PHONY: fmt fmt: ## Verifies all files have been `gofmt`ed. @echo "+ $@" - @gofmt -s -l . | grep -v '.pb.go:' | grep -v vendor | tee /dev/stderr + @if [[ ! -z "$(shell gofmt -s -l . | grep -v '.pb.go:' | grep -v '.twirp.go:' | grep -v vendor | tee /dev/stderr)" ]]; then \ + exit 1; \ + fi .PHONY: lint lint: ## Verifies `golint` passes. @echo "+ $@" - @golint ./... | grep -v '.pb.go:' | grep -v vendor | tee /dev/stderr + @if [[ ! -z "$(shell golint ./... | grep -v '.pb.go:' | grep -v '.twirp.go:' | grep -v vendor | tee /dev/stderr)" ]]; then \ + exit 1; \ + fi .PHONY: test test: prebuild ## Runs the go tests. @@ -71,12 +78,16 @@ test: prebuild ## Runs the go tests. .PHONY: vet vet: ## Verifies `go vet` passes. @echo "+ $@" - @$(GO) vet $(shell $(GO) list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr + @if [[ ! -z "$(shell $(GO) vet $(shell $(GO) list ./... | grep -v vendor) | tee /dev/stderr)" ]]; then \ + exit 1; \ + fi .PHONY: staticcheck staticcheck: ## Verifies `staticcheck` passes. @echo "+ $@" - @staticcheck $(shell $(GO) list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr + @if [[ ! -z "$(shell staticcheck $(shell $(GO) list ./... | grep -v vendor) | tee /dev/stderr)" ]]; then \ + exit 1; \ + fi .PHONY: cover cover: prebuild ## Runs go test with coverage. @@ -146,6 +157,10 @@ REGISTRY := r.j3ss.co image: ## Create the docker image from the Dockerfile. @docker build --rm --force-rm -t $(REGISTRY)/$(NAME) . +.PHONY: image-dev +image-dev: + @docker build --rm --force-rm -f Dockerfile.dev -t $(REGISTRY)/$(NAME):dev . + .PHONY: AUTHORS AUTHORS: @$(file >$@,# This file lists all individuals having contributed content to the repository.) @@ -154,12 +169,12 @@ AUTHORS: .PHONY: vendor vendor: ## Updates the vendoring directory. - @$(RM) Gopkg.toml Gopkg.lock - @$(RM) go.mod go.sum + @$(RM) go.sum @$(RM) -r vendor - @GO111MODULE=on $(GO) mod init - @GO111MODULE=on $(GO) mod tidy - @GO111MODULE=on $(GO) mod vendor + GO111MODULE=on $(GO) mod init || true + GO111MODULE=on $(GO) mod tidy + GO111MODULE=on $(GO) mod vendor + @$(RM) Gopkg.toml Gopkg.lock .PHONY: clean clean: ## Cleanup any build binaries or packages. @@ -170,3 +185,12 @@ clean: ## Cleanup any build binaries or packages. .PHONY: help help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | sed 's/^[^:]*://g' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +check_defined = \ + $(strip $(foreach 1,$1, \ + $(call __check_defined,$1,$(strip $(value 2))))) + +__check_defined = \ + $(if $(value $1),, \ + $(error Undefined $1$(if $2, ($2))$(if $(value @), \ + required by target `$@')))