# Copyright (C) 2018 Luke Shumaker # Copyright (C) 2023-2024 Umorpha Systems # SPDX-License-Identifier: AGPL-3.0-or-later shell_programs += bin/osi-mk shell_programs += bin/osi-shell shell_programs += bin/osi-mount shell_programs += bin/osi-extract python_programs += lib/pacman-choices perl_programs += lib/indent MAKEFLAGS += --no-builtin-rules # Lint ######################################################################### lint: $(addsuffix .bash,$(wildcard test/*.bats)) bin/osi-mk.bash @PS4=; r=0; set -x; { \ shellcheck -- lib/*.sh lib/mk/*.sh $(patsubst bin/osi-mk,bin/osi-mk.bash,$(shell_programs)) || r=$$?; \ shellcheck -x -- test/*.bats.bash || r=$$?; \ MYPYPATH=$$PWD/mypy-stubs mypy --strict $(python_programs) || r=$$?; \ black --check $(python_programs) mypy-stubs || r=$$?; \ isort --check $(python_programs) mypy-stubs || r=$$?; \ diff -u /dev/null <(git grep -L SPDX-License-Identifier: -- $(addprefix :!,$(generate/files))) || r=$$?; \ }; exit $$r .PHONY: lint bin/osi-mk.bash: bin/osi-mk end_indent=$$(sed -En "s/^alias end_indent='(.*)'/\1/p" <$<) && sed -e '/^alias /d' -e "s/end_indent/$${end_indent}/" <$< >$@ %.bats.bash: %.bats { \ echo 'source /usr/lib/bats-core/test_functions.bash'; \ echo 'run() { lines=("bogus"); stderr_lines=("bogus"); }'; \ export BATS_LIBDIR=usr/lib; /$${BATS_LIBDIR}/bats-core/bats-preprocess $<; \ } >$@ # Check ######################################################################## bats_parallel = $(patsubst -j%,-j %,$(patsubst -j,-j$$(nproc),$(filter-out -j1,$(filter -j%,$(MAKEFLAGS))))) check: PATH=$(CURDIR)/bin:$$PATH && cd test && sudo true && bats $(bats_parallel) . .PHONY: check .NOTPARALLEL: check # Generate ##################################################################### generate/files = COPYING.txt COPYING.txt: curl https://www.gnu.org/licenses/agpl-3.0.txt >$@ generate: $(generate/files) generate-clean: rm -f -- $(generate/files) .PHONY: generate generate-clean