From 60908559b60e6d36bd36ee6a7a5f923446903d47 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Sat, 20 Jan 2024 12:15:14 +0100 Subject: [PATCH] * MOD: test actions Signed-off-by: Uwe Hermann --- .gitea/workflows/test.yaml | 2 +- Makefile | 18 ++++++++++++++++++ shellcheck.sh | 24 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100755 shellcheck.sh diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml index e4fad87..f1a4041 100644 --- a/.gitea/workflows/test.yaml +++ b/.gitea/workflows/test.yaml @@ -10,4 +10,4 @@ jobs: steps: - uses: actions/checkout@v4 - name: test - run: test.sh \ No newline at end of file + run: make test diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a425c5f --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +.PHONY: build +build: ## Builds all the dockerfiles in the repository. + @$(CURDIR)/build-all.sh + +.PHONY: test +test: shellcheck ## Runs the tests on the repository. + +.PHONY: shellcheck +shellcheck: ## Runs the shellcheck tests on the scripts. + docker run --rm -i $(DOCKER_FLAGS) \ + --name df-shellcheck \ + -v $(CURDIR):/usr/src:ro \ + --workdir /usr/src \ + uleenucks/shellcheck ./shellcheck.sh + +.PHONY: help +help: + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' \ No newline at end of file diff --git a/shellcheck.sh b/shellcheck.sh new file mode 100755 index 0000000..45ea112 --- /dev/null +++ b/shellcheck.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e +set -o pipefail + +ERRORS=() + +# find all executables and run `shellcheck` +for f in $(find . -type f -not -iwholename '*.git*' -not -name "Dockerfile" | sort -u); do + if file "$f" | grep --quiet shell; then + { + shellcheck "$f" && echo "[OK]: sucessfully linted $f" + } || { + # add to errors + ERRORS+=("$f") + } + fi +done + +if [ ${#ERRORS[@]} -eq 0 ]; then + echo "No errors, hooray" +else + echo "These files failed shellcheck: ${ERRORS[*]}" + exit 1 +fi