141 lines
3.0 KiB
Makefile
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
|