Files
2026-09-24 19:06:28 +02:00

141 lines
3.0 KiB
Makefile

app_name := "dbyaml"
# list all available recipes
[default, group('info')]
@list:
just --list --unsorted
# interactive recipe selection
[group('info')]
@select:
just --choose
prelude := '''
#!/bin/sh
set -euo pipefail
if ! test ":$PATH:" = *":$(pwd)/.venv/bin:"* ; then
export PATH="${UV_PROJECT:-$(pwd)}/.venv/bin:$PATH"
fi
'''
# installed package version
[group('info')]
[script]
version cmd=app_name:
{{prelude}}
{{cmd}} --version
# run checkers
[parallel, group('dev')]
ci-check: test format-check lint-check type-check schema-check
# run fixes
[parallel, group('dev')]
ci-fix: format-fix lint-fix type-fix
# run generators (docs)
[parallel, group('dev')]
ci-gen: docs
# setup virtual environment
[group('install')]
@venv:
[ -d .venv ] || uv venv
# install core environment
[group('install')]
@install-core: venv
echo "install venv core"
uv sync --no-dev
# install dev environment
[group('install')]
@install-dev: venv
echo "install venv dev"
uv sync
# run tests
[group('dev')]
@test:
echo "running tests; pytest (Python)"
uv run pytest
# check formatting
[group('dev')]
@format-check:
echo "running formatter; ruff (Python)"
uv run --only-group=check ruff format --diff .
echo "running formatter; yamlfmt (YAML)"
uv run yamlfmt -lint -quiet -output_format default -formatter indent=2,indentless_arrays=true,retain_line_breaks_single=true,trim_trailing_whitespace=true .
# fix formatting
[group('dev')]
@format-fix:
echo "running formatter; ruff (Python)"
uv run --only-group=check ruff format .
# TODO: yaml files
# check linting
[group('dev')]
@lint-check:
echo "running linter; ruff (Python)"
uv run --only-group=check ruff check --diff .
# fix linting
[group('dev')]
@lint-fix:
echo "running linter; ruff (Python)"
uv run --only-group=check ruff check .
# check typing
[group('dev')]
@type-check:
echo "running type-checker; ty (Python)"
uv run --only-group=check ty check .
echo "running validator; validate-pyproject (Python)"
uv run validate-pyproject pyproject.toml
echo "running checker; shellcheck (shell)"
shellcheck scripts/*.sh
echo "running spell-checker: typos"
uv run --only-group=check typos
# fix typing
[group('dev')]
@type-fix:
echo "running type-checker; ty (Python)"
uv run --only-group=check ty check --fix .
echo "running checker; shellcheck (shell)"
shellcheck scripts/*.sh
# TODO: run fix
echo "running spell-checker: typos"
uv run --only-group=check typos --write-changes
# check project schema
[group('dev')]
@schema-check:
echo "running schema checker (dbyaml config)"
uv run scripts/generate_schema.py | diff - src/dbyaml/resources/dbyaml.schema.json
# generate all docs
[group('dev')]
docs: schema-generate docs-man
# generate project schema
[group('dev')]
@schema-generate:
echo "running schema checker (dbyaml config)"
uv run scripts/generate_schema.py --outfile src/dbyaml/resources/dbyaml.schema.json
# generate man pages
[group('dev')]
@docs-man:
echo "generate man"
uv run click-man --man-version $(uv version --short) dbyaml