--- /dev/null
+name: Code Testing
+
+on:
+ push:
+ pull_request:
+ schedule:
+ - cron: '42 1 * * *'
+
+jobs:
+ spellcheck:
+ runs-on: ubuntu-latest
+ name: Run spellcheck
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+
+ - name: Install lintian
+ run: sudo apt-get -y install lintian
+
+ - name: Spellcheck execution
+ run: make spellcheck
+
+ codecheck:
+ runs-on: ubuntu-latest
+ name: Run codecheck
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+
+ - name: Display original shellcheck version
+ run: shellcheck --version
+
+ - name: Update shellcheck to latest stable version
+ run: |
+ wget -qO- https://github.com/koalaman/shellcheck/releases/download/stable/shellcheck-stable.linux.x86_64.tar.xz | tar -xJv
+ sudo cp shellcheck-stable/shellcheck /usr/bin/
+
+ - name: pip install flake8, isort + black
+ run: pip3 install -U flake8 isort black
+
+ - name: Display current shellcheck version
+ run: shellcheck --version
+
+ - name: Display current flake8 version
+ run: flake8 --version
+
+ - name: Display current isort version
+ run: isort --version
+
+ - name: Display current black version
+ run: black --version
+
+ - name: Codecheck execution
+ run: make codecheck
--- /dev/null
+.DEFAULT_GOAL:=help
+
+help: ## Display this help
+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
+
+all: codecheck spellcheck ## Run codecheck and spellcheck
+
+codecheck: shellcheck pythoncheck ## Run shellcheck and pythoncheck
+
+shellcheck: ## Run shellcheck
+ for shellfile in usr_bin/* usr_sbin/* usr_share/*; do head -1 "$${shellfile}" | grep -q "/bin/bash\|/bin/sh" && shellcheck "$${shellfile}"; done
+
+.ONESHELL:
+pythoncheck: ## Run shellcheck
+ for pythonfile in usr_bin/* usr_sbin/* usr_share/*; do
+ if head -1 "$${pythonfile}" | grep -q "python"; then
+ flake8 "$${pythonfile}"
+ isort --check "$${pythonfile}"
+ black --check "$${pythonfile}"
+ fi
+ done
+
+spellcheck: ## Run spellcheck
+ spellintian manpages/*