pyewjn/do.sh
Deepak Mallubhotla 34601fafbd
All checks were successful
gitea-physics/pyewjn/pipeline/pr-master This commit looks good
nix: makes do.sh play better with nix
2022-06-07 17:30:26 -05:00

70 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Do - The Simplest Build Tool on Earth.
# Documentation and examples see https://github.com/8gears/do
set -Eeuo pipefail # -e "Automatic exit from bash shell script on error" -u "Treat unset variables and parameters as errors"
checknix() {
if [[ "${DO_NIX_CUSTOM:=0}" -eq 1 ]]; then
echo "In an interactive nix env."
else
echo "Using poetry as runner, no nix detected."
fi
}
build() {
echo "I am ${FUNCNAME[0]}ing"
poetry build
}
fmt() {
if [[ "${DO_NIX_CUSTOM:=0}" -eq 1 ]]; then
black .
else
poetry run black .
fi
find . -type f -name "*.py" -exec sed -i -e 's/ /\t/g' {} \;
}
test() {
echo "I am ${FUNCNAME[0]}ing"
if [[ "${DO_NIX_CUSTOM:=0}" -eq 1 ]]; then
flake8 pyewjn tests
mypy pyewjn
pytest --benchmark-disable
else
poetry run flake8 pyewjn tests
poetry run mypy pyewjn
poetry run pytest --benchmark-disable
fi
}
benchmark() {
echo "I am ${FUNCNAME[0]}ing"
if [[ "${DO_NIX_CUSTOM:=0}" -eq 1 ]]; then
pytest --benchmark-only
else
poetry run pytest --benchmark-only
fi
}
htmlcov() {
if [[ "${DO_NIX_CUSTOM:=0}" -eq 1 ]]; then
pytest --cov-report=html
else
poetry run pytest --cov-report=html
fi
}
release() {
./scripts/release.sh
}
all() {
build && fmt && test
}
"$@" # <- execute the task
[ "$#" -gt 0 ] || printf "Usage:\n\t./do.sh %s\n" "($(compgen -A function | grep '^[^_]' | paste -sd '|' -))"