* tenants -> brands, init new tenant model, migrate some config to tenants Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * setup logging for tenants Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * configure celery and cache Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * small fixes, runs Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * task fixes, creation of tenant now works by cloning a template schema, some other small stuff Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix-tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * upstream fixes Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix-pylint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix avatar tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * migrate config reputation_expiry as well Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix web rebase Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix migrations for template schema Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix migrations for template schema Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix migrations for template schema 3 Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * revert reputation expiry migration Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix type Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix some more tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * website: tenants -> brands Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * try fixing e2e tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * start frontend :help: Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add ability to disable tenants api Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * delete embedded outpost if it is disabled Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * make sure embedded outpost is disabled when tenants are enabled Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * management commands: add --schema option where relevant Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * store files per-tenant Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix embedded outpost deletion Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix files migration Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add tenant api tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add domain tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add settings tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * make --schema-name default to public in mgmt commands Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * sources/ldap: make sure lock is per-tenant Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix stuff I broke Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix remaining failing tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * try fixing e2e tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * much better frontend, but save does not refresh form properly Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * update django-tenants with latest fixes Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * i18n-extract Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * review comments Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * move event_retention from brands to tenants Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * wip Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * root: add support for storing media files in S3 Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * use permissions for settings api Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * blueprints: disable tenants management Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix embedded outpost create/delete logic Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * make gen Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * make sure prometheus metrics are correctly served Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * makefile: don't delete the go api client when not regenerating it Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * tenants api: add recovery group and token creation endpoints Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix startup Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix prometheus metrics Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix web stuff Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix migrations from stable Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix oauth source type import Signed-off-by: Jens Langhammer <jens@goauthentik.io> * Revert "fix oauth source type import" This reverts commitd015fd0244. * try with setting_changed signal Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * try with connection_created signal Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix scim tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix web after merge Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix enterprise settings Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * Revert "try with connection_created signal" This reverts commit764a999db8. * Revert "try with setting_changed signal" This reverts commit32b40a3bbb. * lib/expression: refactor expression compilation Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix django version Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix web after merge Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * relock poetry Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix reconcile Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * try running tenant save in a transaction Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * black Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * test: export postgres logs for debugging and use failfast Signed-off-by: Jens Langhammer <jens@goauthentik.io> * test: fix container name for logs Signed-off-by: Jens Langhammer <jens@goauthentik.io> * do not copy tenant data Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * Revert "try running tenant save in a transaction" This reverts commitda6dec5a61. * Revert "do not copy tenant data" This reverts commit d07ae9423672f068b0bd8be409ff9b58452a80f2. * Revert "Revert "do not copy tenant data"" This reverts commit4bffb19704. * fix clone with nodata Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * why not Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * remove failfast Signed-off-by: Jens Langhammer <jens@goauthentik.io> * remove postgres query logging Signed-off-by: Jens Langhammer <jens@goauthentik.io> * update reconcile logic to clearly differentiate between tenant and global Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix reconcile app decorator Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * enable django checks Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * actually nodata was unnecessary as we're cloning from template and not from public Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * pylint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * update django-tenants with sequence fix Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * actually update Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix e2e tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add tests for settings api Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * add tests for recovery api Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * recovery tests: do them on a new tenant Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * web: fix system status being degraded when embedded outpost is disabled Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix recovery tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tenants tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint-fix Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint-fix Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * update UI Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add management command to create a tenant Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add docs Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * release notes Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * more docs Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * checklist Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * self review Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * spelling Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * make web after upgrading Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * remove extra xlif file Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * prettier Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * Revert "add management command to create a tenant" This reverts commit39d13c0447. * split api into smaller files, only import urls when tenants is enabled Signed-off-by: Jens Langhammer <jens@goauthentik.io> * rewite some things on the release notes Signed-off-by: Jens Langhammer <jens@goauthentik.io> * root: make sure install_id comes from public schema Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * require a license to use tenants Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * lint Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tenants tests Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix files migration Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * release notes: add warning about user sessions being invalidated Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * remove api disabled test, we can't test for it Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> --------- Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
264 lines
8.2 KiB
Makefile
264 lines
8.2 KiB
Makefile
.PHONY: gen dev-reset all clean test web website
|
||
|
||
.SHELLFLAGS += ${SHELLFLAGS} -e
|
||
PWD = $(shell pwd)
|
||
UID = $(shell id -u)
|
||
GID = $(shell id -g)
|
||
NPM_VERSION = $(shell python -m scripts.npm_version)
|
||
PY_SOURCES = authentik tests scripts lifecycle
|
||
DOCKER_IMAGE ?= "authentik:test"
|
||
|
||
pg_user := $(shell python -m authentik.lib.config postgresql.user 2>/dev/null)
|
||
pg_host := $(shell python -m authentik.lib.config postgresql.host 2>/dev/null)
|
||
pg_name := $(shell python -m authentik.lib.config postgresql.name 2>/dev/null)
|
||
|
||
CODESPELL_ARGS = -D - -D .github/codespell-dictionary.txt \
|
||
-I .github/codespell-words.txt \
|
||
-S 'web/src/locales/**' \
|
||
authentik \
|
||
internal \
|
||
cmd \
|
||
web/src \
|
||
website/src \
|
||
website/blog \
|
||
website/developer-docs \
|
||
website/docs \
|
||
website/integrations \
|
||
website/src
|
||
|
||
all: lint-fix lint test gen web ## Lint, build, and test everything
|
||
|
||
HELP_WIDTH := $(shell grep -h '^[a-z][^ ]*:.*\#\#' $(MAKEFILE_LIST) 2>/dev/null | \
|
||
cut -d':' -f1 | awk '{printf "%d\n", length}' | sort -rn | head -1)
|
||
|
||
help: ## Show this help
|
||
@echo "\nSpecify a command. The choices are:\n"
|
||
@grep -Eh '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
||
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[0;36m%-$(HELP_WIDTH)s \033[m %s\n", $$1, $$2}' | \
|
||
sort
|
||
@echo ""
|
||
|
||
test-go:
|
||
go test -timeout 0 -v -race -cover ./...
|
||
|
||
test-docker: ## Run all tests in a docker-compose
|
||
echo "PG_PASS=$(openssl rand -base64 32)" >> .env
|
||
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 32)" >> .env
|
||
docker-compose pull -q
|
||
docker-compose up --no-start
|
||
docker-compose start postgresql redis
|
||
docker-compose run -u root server test-all
|
||
rm -f .env
|
||
|
||
test: ## Run the server tests and produce a coverage report (locally)
|
||
coverage run manage.py test --keepdb authentik
|
||
coverage html
|
||
coverage report
|
||
|
||
lint-fix: ## Lint and automatically fix errors in the python source code. Reports spelling errors.
|
||
isort $(PY_SOURCES)
|
||
black $(PY_SOURCES)
|
||
ruff --fix $(PY_SOURCES)
|
||
codespell -w $(CODESPELL_ARGS)
|
||
|
||
lint: ## Lint the python and golang sources
|
||
bandit -r $(PY_SOURCES) -x node_modules
|
||
./web/node_modules/.bin/pyright $(PY_SOURCES)
|
||
pylint $(PY_SOURCES)
|
||
golangci-lint run -v
|
||
|
||
core-install:
|
||
poetry install
|
||
|
||
migrate: ## Run the Authentik Django server's migrations
|
||
python -m lifecycle.migrate
|
||
|
||
i18n-extract: core-i18n-extract web-i18n-extract ## Extract strings that require translation into files to send to a translation service
|
||
|
||
core-i18n-extract:
|
||
ak makemessages --ignore web --ignore internal --ignore web --ignore web-api --ignore website -l en
|
||
|
||
install: web-install website-install core-install ## Install all requires dependencies for `web`, `website` and `core`
|
||
|
||
dev-drop-db:
|
||
dropdb -U ${pg_user} -h ${pg_host} ${pg_name}
|
||
# Also remove the test-db if it exists
|
||
dropdb -U ${pg_user} -h ${pg_host} test_${pg_name} || true
|
||
redis-cli -n 0 flushall
|
||
|
||
dev-create-db:
|
||
createdb -U ${pg_user} -h ${pg_host} ${pg_name}
|
||
|
||
dev-reset: dev-drop-db dev-create-db migrate ## Drop and restore the Authentik PostgreSQL instance to a "fresh install" state.
|
||
|
||
#########################
|
||
## API Schema
|
||
#########################
|
||
|
||
gen-build: ## Extract the schema from the database
|
||
AUTHENTIK_DEBUG=true \
|
||
AUTHENTIK_TENANTS__ENABLED=true \
|
||
AUTHENTIK_OUTPOSTS__DISABLE_EMBEDDED_OUTPOST=true \
|
||
ak make_blueprint_schema > blueprints/schema.json
|
||
AUTHENTIK_DEBUG=true \
|
||
AUTHENTIK_TENANTS__ENABLED=true \
|
||
AUTHENTIK_OUTPOSTS__DISABLE_EMBEDDED_OUTPOST=true \
|
||
ak spectacular --file schema.yml
|
||
|
||
gen-changelog: ## (Release) generate the changelog based from the commits since the last tag
|
||
git log --pretty=format:" - %s" $(shell git describe --tags $(shell git rev-list --tags --max-count=1))...$(shell git branch --show-current) | sort > changelog.md
|
||
npx prettier --write changelog.md
|
||
|
||
gen-diff: ## (Release) generate the changelog diff between the current schema and the last tag
|
||
git show $(shell git describe --tags $(shell git rev-list --tags --max-count=1)):schema.yml > old_schema.yml
|
||
docker run \
|
||
--rm -v ${PWD}:/local \
|
||
--user ${UID}:${GID} \
|
||
docker.io/openapitools/openapi-diff:2.1.0-beta.6 \
|
||
--markdown /local/diff.md \
|
||
/local/old_schema.yml /local/schema.yml
|
||
rm old_schema.yml
|
||
sed -i 's/{/{/g' diff.md
|
||
sed -i 's/}/}/g' diff.md
|
||
npx prettier --write diff.md
|
||
|
||
gen-clean-ts: ## Remove generated API client for Typescript
|
||
rm -rf gen-ts-api/
|
||
rm -rf web/node_modules/@goauthentik/api/
|
||
|
||
gen-clean-go: ## Remove generated API client for Go
|
||
rm -rf gen-go-api/
|
||
|
||
gen-clean: gen-clean-ts gen-clean-go ## Remove generated API clients
|
||
|
||
gen-client-ts: gen-clean-ts ## Build and install the authentik API for Typescript into the authentik UI Application
|
||
docker run \
|
||
--rm -v ${PWD}:/local \
|
||
--user ${UID}:${GID} \
|
||
docker.io/openapitools/openapi-generator-cli:v6.5.0 generate \
|
||
-i /local/schema.yml \
|
||
-g typescript-fetch \
|
||
-o /local/gen-ts-api \
|
||
-c /local/scripts/api-ts-config.yaml \
|
||
--additional-properties=npmVersion=${NPM_VERSION} \
|
||
--git-repo-id authentik \
|
||
--git-user-id goauthentik
|
||
mkdir -p web/node_modules/@goauthentik/api
|
||
cd gen-ts-api && npm i
|
||
\cp -rfv gen-ts-api/* web/node_modules/@goauthentik/api
|
||
|
||
gen-client-go: gen-clean-go ## Build and install the authentik API for Golang
|
||
mkdir -p ./gen-go-api ./gen-go-api/templates
|
||
wget https://raw.githubusercontent.com/goauthentik/client-go/main/config.yaml -O ./gen-go-api/config.yaml
|
||
wget https://raw.githubusercontent.com/goauthentik/client-go/main/templates/README.mustache -O ./gen-go-api/templates/README.mustache
|
||
wget https://raw.githubusercontent.com/goauthentik/client-go/main/templates/go.mod.mustache -O ./gen-go-api/templates/go.mod.mustache
|
||
cp schema.yml ./gen-go-api/
|
||
docker run \
|
||
--rm -v ${PWD}/gen-go-api:/local \
|
||
--user ${UID}:${GID} \
|
||
docker.io/openapitools/openapi-generator-cli:v6.5.0 generate \
|
||
-i /local/schema.yml \
|
||
-g go \
|
||
-o /local/ \
|
||
-c /local/config.yaml
|
||
go mod edit -replace goauthentik.io/api/v3=./gen-go-api
|
||
rm -rf ./gen-go-api/config.yaml ./gen-go-api/templates/
|
||
|
||
gen-dev-config: ## Generate a local development config file
|
||
python -m scripts.generate_config
|
||
|
||
gen: gen-build gen-client-ts
|
||
|
||
#########################
|
||
## Web
|
||
#########################
|
||
|
||
web-build: web-install ## Build the Authentik UI
|
||
cd web && npm run build
|
||
|
||
web: web-lint-fix web-lint web-check-compile web-i18n-extract ## Automatically fix formatting issues in the Authentik UI source code, lint the code, and compile it
|
||
|
||
web-install: ## Install the necessary libraries to build the Authentik UI
|
||
cd web && npm ci
|
||
|
||
web-watch: ## Build and watch the Authentik UI for changes, updating automatically
|
||
rm -rf web/dist/
|
||
mkdir web/dist/
|
||
touch web/dist/.gitkeep
|
||
cd web && npm run watch
|
||
|
||
web-storybook-watch: ## Build and run the storybook documentation server
|
||
cd web && npm run storybook
|
||
|
||
web-lint-fix:
|
||
cd web && npm run prettier
|
||
|
||
web-lint:
|
||
cd web && npm run lint
|
||
cd web && npm run lit-analyse
|
||
|
||
web-check-compile:
|
||
cd web && npm run tsc
|
||
|
||
web-i18n-extract:
|
||
cd web && npm run extract-locales
|
||
|
||
#########################
|
||
## Website
|
||
#########################
|
||
|
||
website: website-lint-fix website-build ## Automatically fix formatting issues in the Authentik website/docs source code, lint the code, and compile it
|
||
|
||
website-install:
|
||
cd website && npm ci
|
||
|
||
website-lint-fix:
|
||
cd website && npm run prettier
|
||
|
||
website-build:
|
||
cd website && npm run build
|
||
|
||
website-watch: ## Build and watch the documentation website, updating automatically
|
||
cd website && npm run watch
|
||
|
||
#########################
|
||
## Docker
|
||
#########################
|
||
|
||
docker: ## Build a docker image of the current source tree
|
||
DOCKER_BUILDKIT=1 docker build . --progress plain --tag ${DOCKER_IMAGE}
|
||
|
||
#########################
|
||
## CI
|
||
#########################
|
||
# These targets are use by GitHub actions to allow usage of matrix
|
||
# which makes the YAML File a lot smaller
|
||
|
||
ci--meta-debug:
|
||
python -V
|
||
node --version
|
||
|
||
ci-pylint: ci--meta-debug
|
||
pylint $(PY_SOURCES)
|
||
|
||
ci-black: ci--meta-debug
|
||
black --check $(PY_SOURCES)
|
||
|
||
ci-ruff: ci--meta-debug
|
||
ruff check $(PY_SOURCES)
|
||
|
||
ci-codespell: ci--meta-debug
|
||
codespell $(CODESPELL_ARGS) -s
|
||
|
||
ci-isort: ci--meta-debug
|
||
isort --check $(PY_SOURCES)
|
||
|
||
ci-bandit: ci--meta-debug
|
||
bandit -r $(PY_SOURCES)
|
||
|
||
ci-pyright: ci--meta-debug
|
||
./web/node_modules/.bin/pyright $(PY_SOURCES)
|
||
|
||
ci-pending-migrations: ci--meta-debug
|
||
ak makemigrations --check
|