app_name := "dbyaml" # list all available recipes [default, group('info')] @list: just --list --unsorted # interactive recipe selection [group('info')] @select-shell: 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 all dev tools [parallel, group('dev')] ci: test format-check lint-check type-check schema-check # run all dev tools [parallel, group('dev')] ci-gen: format-fix lint-fix type-fix 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 # TODO: # Spell checking # 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 # check project schema [group('dev')] @schema-check: echo "running schema checker (Metadata dbyaml)" uv run scripts/generate_schema.py | diff - src/dbyaml/resources/dbyaml.schema.json # generate all docs [group('dev')] docs: schema-generate man # generate project schema [group('dev')] @schema-generate: echo "Python project metadata and dbyaml schema" uv run scripts/generate_schema.py --outfile src/dbyaml/resources/dbyaml.schema.json # generate man pages [group('dev')] @man: echo "generate man" uv run click-man --man-version $(uv version --short) dbyaml