BUNDLE = static/cache/bundle OPENAPI = docs/openapi CLEAN_UP = $(BUNDLE) src/cache_buster_data.json assets define frontend_env ## install frontend deps yarn install cd docs/openapi && yarn install endef define cache_bust ## run cache_busting program cd utils/cache-bust && cargo run endef default: frontend ## Build app in debug mode $(call cache_bust) cargo build check: ## Check for syntax errors on all workspaces cargo check --workspace --tests --all-features cd utils/cache-bust && cargo check --tests --all-features cd db/db-migrations && cargo check --tests --all-features cd db/db-sqlx-postgres &&\ DATABASE_URL=${POSTGRES_DATABASE_URL}\ cargo check cd db/db-sqlx-maria &&\ DATABASE_URL=${MARIA_DATABASE_URL}\ cargo check cd db/db-core/ && cargo check cache-bust: ## Run cache buster on static assets $(call cache_bust) clean: ## Delete build artifacts @cargo clean @yarn cache clean @-rm $(CLEAN_UP) coverage: migrate ## Generate code coverage report in HTML format $(call cache_bust) cargo tarpaulin -t 1200 --out Html doc: ## Generate documentation #yarn doc cargo doc --no-deps --workspace --all-features docker: ## Build Docker image docker build -t mcaptcha/mcaptcha:master -t mcaptcha/mcaptcha:latest . docker-publish: docker ## Build and publish Docker image docker push mcaptcha/mcaptcha:master docker push mcaptcha/mcaptcha:latest env: ## Setup development environtment cargo fetch $(call frontend_env) frontend-env: ## Install frontend deps $(call frontend_env) frontend: ## Build frontend $(call frontend_env) cd $(OPENAPI) && yarn build yarn install @-rm -rf $(BUNDLE) @-mkdir $(BUNDLE) yarn build @yarn run sass -s \ compressed templates/main.scss \ ./static/cache/bundle/css/main.css @yarn run sass -s \ compressed templates/mobile.scss \ ./static/cache/bundle/css/mobile.css @yarn run sass -s \ compressed templates/widget/main.scss \ ./static/cache/bundle/css/widget.css @./scripts/librejs.sh @./scripts/cachebust.sh frontend-test: ## Run frontend tests cd $(OPENAPI)&& yarn test yarn test lint: ## Lint codebase cargo fmt -v --all -- --emit files cargo clippy --workspace --tests --all-features yarn lint cd $(OPENAPI)&& yarn test migrate: ## Run database migrations cd db/db-migrations/ && cargo run release: frontend ## Build app with release optimizations $(call cache_bust) cargo build --release run: frontend ## Run app in debug mode $(call cache_bust) cargo run sqlx-offline-data: ## prepare sqlx offline data cd db/db-sqlx-postgres && cargo sqlx prepare \ --database-url=${POSTGRES_DATABASE_URL} -- \ --all-features cd db/db-sqlx-maria && cargo sqlx prepare \ --database-url=${MARIA_DATABASE_URL} -- \ --all-features # cd db/db-sqlx-sqlite/ \ # && DATABASE_URL=${SQLITE_DATABASE_URL} cargo sqlx prepare test-db: ## run tests on database cd db/db-sqlx-postgres &&\ DATABASE_URL=${POSTGRES_DATABASE_URL}\ cargo test --no-fail-fast test: frontend-test frontend ## Run all available tests $(call cache_bust) cd db/db-sqlx-postgres &&\ DATABASE_URL=${POSTGRES_DATABASE_URL}\ cargo test --no-fail-fast cd db/db-sqlx-maria &&\ DATABASE_URL=${MARIA_DATABASE_URL}\ cargo test --no-fail-fast cargo test --no-fail-fast # ./scripts/tests.sh xml-test-coverage: migrate ## Generate code coverage report in XML format $(call cache_bust) cargo tarpaulin -t 1200 --out Xml help: ## Prints help for targets with comments @cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'