.DEFAULT_GOAL := help COMPOSE = docker compose -f docker-compose.yml -f docker-compose.override.yml .PHONY: system_setup system_setup: ## setup system deps @lefthook install .PHONY: setup setup: system_setup ## setup project @mkdir -p priv/plts @mix do local.rebar --force, local.hex --force @mix do deps.get, deps.compile @mix dialyzer --plt .PHONY: check_format check_format: ## run format checker @mix format --check-formatted .PHONY: check_compile check_compile: ## run compile @mix compile --warnings-as-errors --force .PHONY: credo credo: ## run credo @mix credo suggest --strict --format=flycheck .PHONY: dialyzer dialyzer: ## run dialyzer @mix dialyzer --no-check --quiet --ignore-exit-status --format short .PHONY: static_code_analysis static_code_analysis: check_format check_compile credo dialyzer ## run static code analysis .PHONY: test test: ## run tests @mix test --cover --trace --slowest 10 .PHONY: compose_database_create compose_database_create: @$(COMPOSE) run --rm --entrypoint mix app ecto.create .PHONY: compose_database_migrate compose_database_migrate: ## apply migrations to our database @$(COMPOSE) run --rm --entrypoint mix app ecto.migrate .PHONY: compose_database_setup compose_database_setup: compose_database_create compose_database_migrate ## create and apply migrations .PHONY: compose_ps compose_ps: ## status of containers @$(COMPOSE) ps .PHONY: compose_remote compose_remote: ## connect to remote node @$(COMPOSE) exec app ./priv/docker/service/docker-remote.sh .PHONY: compose_test compose_test: ## execute test on docker environment @$(COMPOSE) --profile test run --rm test .PHONY: compose_test_shell compose_test_shell: ## enter test environment shell @$(COMPOSE) --profile test run --rm --entrypoint bash test -c bash .PHONY: compose_up compose_up: ## start containers for this service @$(COMPOSE) up -d .PHONY: compose_watch compose_watch: ## start containers for this service watching for updates in filesystem @$(COMPOSE) up -w .PHONY: help help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'