From 278d32748e5ac4678fcebd0a70f77d60a9c53620 Mon Sep 17 00:00:00 2001 From: Javier Palomo Date: Tue, 28 Jul 2020 14:44:42 +0200 Subject: [PATCH] scripts: Verify that we are not using restricted packages It checks that we are not directly importing 'sync/atomic'. Signed-off-by: Javier Palomo --- Makefile.common | 7 ++++++- scripts/check_restricted_imports.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 scripts/check_restricted_imports.sh diff --git a/Makefile.common b/Makefile.common index 9320176ca2..c3abbaa6e0 100644 --- a/Makefile.common +++ b/Makefile.common @@ -118,7 +118,7 @@ endif %: common-% ; .PHONY: common-all -common-all: precheck style check_license lint unused build test +common-all: precheck restricted_imports style check_license lint unused build test .PHONY: common-style common-style: @@ -270,6 +270,11 @@ proto: @echo ">> generating code from proto files" @./scripts/genproto.sh +.PHONY: common-restricted_imports +common-restricted_imports: + @echo ">> verifying that we are not using restricted packages" + @./scripts/check_restricted_imports.sh + ifdef GOLANGCI_LINT $(GOLANGCI_LINT): mkdir -p $(FIRST_GOPATH)/bin diff --git a/scripts/check_restricted_imports.sh b/scripts/check_restricted_imports.sh new file mode 100755 index 0000000000..bcc423cfa7 --- /dev/null +++ b/scripts/check_restricted_imports.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# +# Checks that restricted packages are not being imported. +# Run from repository root. +#set -e +set -u + +if ! [[ "$0" =~ "scripts/check_restricted_imports.sh" ]]; then + echo "must be run from repository root" + exit 255 +fi + +exit_status=0 + +packages=( + "sync/atomic" +) +for package in "${packages[@]}" +do + # Grep exits with 0 if there is at least one match + if output=$(grep -nir "${package}" --exclude-dir=vendor --exclude-dir=scripts ./*); then + exit_status=1 + echo "Restricted package '${package}' is being used in the following files:" + echo "${output}" + fi +done +exit ${exit_status} \ No newline at end of file