chore: repo maintenance 🤖

more details: https://github.com/moul/repoman

Signed-off-by: moul-bot <bot@moul.io>
This commit is contained in:
moul-bot 2020-11-09 22:52:48 +01:00
parent 04fe246220
commit 279033cb50
No known key found for this signature in database
GPG Key ID: 615D26EDFC55B351
3 changed files with 79 additions and 14 deletions

20
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,20 @@
version: 2
updates:
- package-ecosystem: docker
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10
- package-ecosystem: gomod
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10

2
AUTHORS generated
View File

@ -11,9 +11,11 @@ Loïc Carr <lcarr@online.net>
Manfred Touron <94029+moul@users.noreply.github.com> Manfred Touron <94029+moul@users.noreply.github.com>
Manfred Touron <m@42.am> Manfred Touron <m@42.am>
Mickaël Thomas <mickael9@gmail.com> Mickaël Thomas <mickael9@gmail.com>
moul-bot <bot@moul.io>
Patrik Cyvoct <patrik@ptrk.io> Patrik Cyvoct <patrik@ptrk.io>
Quentin Perez <qperez42@gmail.com> Quentin Perez <qperez42@gmail.com>
Quentin Perez <qperez@ocs.online.net> Quentin Perez <qperez@ocs.online.net>
Renovate Bot <bot@renovateapp.com> Renovate Bot <bot@renovateapp.com>
Roman Nikitin <nikrom2012@me.com>
Sandro Jäckel <sandro.jaeckel@gmail.com> Sandro Jäckel <sandro.jaeckel@gmail.com>
tamal <tamal@appscode.com> tamal <tamal@appscode.com>

71
rules.mk vendored
View File

@ -23,13 +23,17 @@
# || | | | | | /_/_/_/\___/\_,_/_/ | # || | | | | | /_/_/_/\___/\_,_/_/ |
# +--------------------------------------------------------------+ # +--------------------------------------------------------------+
all: help .PHONY: _default_entrypoint
_default_entrypoint: help
## ##
## Common helpers ## Common helpers
## ##
rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
check-program = $(foreach exec,$(1),$(if $(shell PATH="$(PATH)" which $(exec)),,$(error "No $(exec) in PATH")))
my-filter-out = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v)))
novendor = $(call my-filter-out,vendor/,$(1))
## ##
## rules.mk ## rules.mk
@ -70,7 +74,7 @@ GO ?= go
GOPATH ?= $(HOME)/go GOPATH ?= $(HOME)/go
GO_INSTALL_OPTS ?= GO_INSTALL_OPTS ?=
GO_TEST_OPTS ?= -test.timeout=30s GO_TEST_OPTS ?= -test.timeout=30s
GOMOD_DIR ?= . GOMOD_DIRS ?= $(sort $(call novendor,$(dir $(call rwildcard,*,*/go.mod go.mod))))
GOCOVERAGE_FILE ?= ./coverage.txt GOCOVERAGE_FILE ?= ./coverage.txt
GOTESTJSON_FILE ?= ./go-test.json GOTESTJSON_FILE ?= ./go-test.json
GOBUILDLOG_FILE ?= ./go-build.log GOBUILDLOG_FILE ?= ./go-build.log
@ -96,6 +100,7 @@ INSTALL_STEPS += go.install
.PHONY: go.release .PHONY: go.release
go.release: go.release:
$(call check-program, goreleaser)
goreleaser --snapshot --skip-publish --rm-dist goreleaser --snapshot --skip-publish --rm-dist
@echo -n "Do you want to release? [y/N] " && read ans && \ @echo -n "Do you want to release? [y/N] " && read ans && \
if [ $${ans:-N} = y ]; then set -xe; goreleaser --rm-dist; fi if [ $${ans:-N} = y ]; then set -xe; goreleaser --rm-dist; fi
@ -107,10 +112,11 @@ go.unittest:
ifeq ($(CI),true) ifeq ($(CI),true)
@echo "mode: atomic" > /tmp/gocoverage @echo "mode: atomic" > /tmp/gocoverage
@rm -f $(GOTESTJSON_FILE) @rm -f $(GOTESTJSON_FILE)
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do (set -e; (set -euf pipefail; \ @set -e; for dir in $(GOMOD_DIRS); do (set -e; (set -euf pipefail; \
cd $$dir; \ cd $$dir; \
($(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race -json | tee -a $(GOTESTJSON_FILE) 3>&1 1>&2 2>&3 | tee -a $(GOBUILDLOG_FILE); \ (($(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race -json && touch $@.ok) | tee -a $(GOTESTJSON_FILE) 3>&1 1>&2 2>&3 | tee -a $(GOBUILDLOG_FILE); \
); \ ); \
rm $@.ok 2>/dev/null || exit 1; \
if [ -f /tmp/profile.out ]; then \ if [ -f /tmp/profile.out ]; then \
cat /tmp/profile.out | sed "/mode: atomic/d" >> /tmp/gocoverage; \ cat /tmp/profile.out | sed "/mode: atomic/d" >> /tmp/gocoverage; \
rm -f /tmp/profile.out; \ rm -f /tmp/profile.out; \
@ -118,7 +124,7 @@ ifeq ($(CI),true)
@mv /tmp/gocoverage $(GOCOVERAGE_FILE) @mv /tmp/gocoverage $(GOCOVERAGE_FILE)
else else
@echo "mode: atomic" > /tmp/gocoverage @echo "mode: atomic" > /tmp/gocoverage
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do (set -e; (set -xe; \ @set -e; for dir in $(GOMOD_DIRS); do (set -e; (set -xe; \
cd $$dir; \ cd $$dir; \
$(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race); \ $(GO) test ./... $(GO_TEST_OPTS) -cover -coverprofile=/tmp/profile.out -covermode=atomic -race); \
if [ -f /tmp/profile.out ]; then \ if [ -f /tmp/profile.out ]; then \
@ -130,7 +136,7 @@ endif
.PHONY: go.checkdoc .PHONY: go.checkdoc
go.checkdoc: go.checkdoc:
go doc $(GOMOD_DIR) go doc $(first $(GOMOD_DIRS))
.PHONY: go.coverfunc .PHONY: go.coverfunc
go.coverfunc: go.unittest go.coverfunc: go.unittest
@ -138,46 +144,74 @@ go.coverfunc: go.unittest
.PHONY: go.lint .PHONY: go.lint
go.lint: go.lint:
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
cd $$dir; \ cd $$dir; \
golangci-lint run --verbose ./...; \ golangci-lint run --verbose ./...; \
); done ); done
.PHONY: go.tidy .PHONY: go.tidy
go.tidy: go.tidy:
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ @# tidy dirs with go.mod files
@set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
cd $$dir; \ cd $$dir; \
$(GO) mod tidy; \ $(GO) mod tidy; \
); done ); done
.PHONY: go.depaware-update
go.depaware-update: go.tidy
@# gen depaware for bins
@set -e; for dir in $(GOBINS); do ( set -xe; \
cd $$dir; \
$(GO) run github.com/tailscale/depaware --update .; \
); done
@# tidy unused depaware deps if not in a tools_test.go file
@set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
cd $$dir; \
$(GO) mod tidy; \
); done
.PHONY: go.depaware-check
go.depaware-check: go.tidy
@# gen depaware for bins
@set -e; for dir in $(GOBINS); do ( set -xe; \
cd $$dir; \
$(GO) run github.com/tailscale/depaware --check .; \
); done
.PHONY: go.build .PHONY: go.build
go.build: go.build:
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
cd $$dir; \ cd $$dir; \
$(GO) build ./...; \ $(GO) build ./...; \
); done ); done
.PHONY: go.bump-deps .PHONY: go.bump-deps
go.bumpdeps: go.bumpdeps:
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \ @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
cd $$dir; \ cd $$dir; \
$(GO) get -u ./...; \ $(GO) get -u ./...; \
); done ); done
.PHONY: go.bump-deps .PHONY: go.bump-deps
go.fmt: go.fmt:
if ! command -v goimports &>/dev/null; then GO111MODULE=off go get golang.org/x/tools/cmd/goimports; fi @set -e; for dir in $(GOMOD_DIRS); do ( set -xe; \
@set -e; for dir in `find $(GOMOD_DIR) -type f -name "go.mod" | grep -v /vendor/ | sed 's@/[^/]*$$@@' | sort | uniq`; do ( set -xe; \
cd $$dir; \ cd $$dir; \
goimports -w `go list -f '{{.Dir}}' ./...)` \ $(GO) run golang.org/x/tools/cmd/goimports -w `go list -f '{{.Dir}}' ./...` \
); done ); done
VERIFY_STEPS += go.depaware-check
BUILD_STEPS += go.build BUILD_STEPS += go.build
BUMPDEPS_STEPS += go.bumpdeps BUMPDEPS_STEPS += go.bumpdeps go.depaware-update
TIDY_STEPS += go.tidy TIDY_STEPS += go.tidy
LINT_STEPS += go.lint LINT_STEPS += go.lint
UNITTEST_STEPS += go.unittest UNITTEST_STEPS += go.unittest
FMT_STEPS += go.fmt FMT_STEPS += go.fmt
# FIXME: disabled, because currently slow
# new rule that is manually run sometimes, i.e. `make pre-release` or `make maintenance`.
# alternative: run it each time the go.mod is changed
#GENERATE_STEPS += go.depaware-update
endif endif
## ##
@ -238,6 +272,7 @@ ifdef DOCKER_IMAGE
ifneq ($(DOCKER_IMAGE),none) ifneq ($(DOCKER_IMAGE),none)
.PHONY: docker.build .PHONY: docker.build
docker.build: docker.build:
$(call check-program, docker)
$(call docker_build,$(DOCKERFILE_PATH),$(DOCKER_IMAGE)) $(call docker_build,$(DOCKERFILE_PATH),$(DOCKER_IMAGE))
BUILD_STEPS += docker.build BUILD_STEPS += docker.build
@ -282,6 +317,11 @@ ifdef BUILD_STEPS
build: $(PRE_BUILD_STEPS) $(BUILD_STEPS) build: $(PRE_BUILD_STEPS) $(BUILD_STEPS)
endif endif
ifdef VERIFY_STEPS
.PHONY: verify
verify: $(PRE_VERIFY_STEPS) $(VERIFY_STEPS)
endif
ifdef RELEASE_STEPS ifdef RELEASE_STEPS
.PHONY: release .PHONY: release
release: $(PRE_RELEASE_STEPS) $(RELEASE_STEPS) release: $(PRE_RELEASE_STEPS) $(RELEASE_STEPS)
@ -315,4 +355,7 @@ help::
@[ "$(TEST_STEPS)" != "" ] && echo " test" || true @[ "$(TEST_STEPS)" != "" ] && echo " test" || true
@[ "$(TIDY_STEPS)" != "" ] && echo " tidy" || true @[ "$(TIDY_STEPS)" != "" ] && echo " tidy" || true
@[ "$(UNITTEST_STEPS)" != "" ] && echo " unittest" || true @[ "$(UNITTEST_STEPS)" != "" ] && echo " unittest" || true
@[ "$(VERIFY_STEPS)" != "" ] && echo " verify" || true
@# FIXME: list other commands @# FIXME: list other commands
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true