176 lines
3.8 KiB
Makefile
176 lines
3.8 KiB
Makefile
# ENV
|
|
|
|
ifeq (,$(shell which uv))
|
|
ifeq (,$(shell python3 -m uv --help||python3 -m pip install --user uv)) # detect uv install
|
|
UV ?= false
|
|
endif
|
|
UV ?= python3 -m uv
|
|
endif
|
|
|
|
UV ?= uv
|
|
RUFF ?= $(UV) run --active ruff
|
|
TY ?= $(UV) run --active ty
|
|
|
|
ifeq (,$(shell which bun))
|
|
NPM ?= npm
|
|
endif
|
|
|
|
NPM ?= bun
|
|
|
|
ifeq (,$(shell which podman))
|
|
DOCKER ?= docker
|
|
endif
|
|
|
|
DOCKER ?= podman
|
|
DOCKER_TAG ?= tout-doux
|
|
PORT ?= 5000
|
|
|
|
APP_EXEC ?= $(DOCKER) compose exec app
|
|
APP_RUN ?= $(DOCKER) compose run --rm app
|
|
TORTOISE ?= $(APP_RUN) uv run tortoise
|
|
|
|
POSTGRES_EXEC ?= $(DOCKER) compose exec postgres
|
|
PSQL_EXEC_BIN ?= $(POSTGRES_EXEC) psql --username="tout-doux" --dbname="tout-doux"
|
|
|
|
OPEN ?= xdg-open
|
|
|
|
# DOCS
|
|
|
|
.PHONY: help
|
|
help: ## show this message
|
|
@echo "Usage: $(MAKE) [target1] [target2] ..."
|
|
@echo ""
|
|
@echo "Commands/Targets:"
|
|
@cat $(MAKEFILE_LIST) | grep -E '(^[a-zA-Z0-9_%-]+:.*?##.*$$)|(^##)' | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-20s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/'
|
|
@echo ""
|
|
@echo "Environment:"
|
|
@cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z0-9_-]+\s*\??=.*$$' | grep -Eo '^[a-zA-Z0-9_-]+' | xargs -I {} $(MAKE) -s print-{} 2> /dev/null
|
|
|
|
.PHONY: print-%
|
|
print-%:
|
|
@echo -e '\033[32m$*\033[0m = $($*)'
|
|
|
|
# FILES
|
|
|
|
.venv: uv.lock
|
|
$(MAKE) -s uv-sync
|
|
|
|
node_modules: bun.lock
|
|
$(MAKE) -s npm-install
|
|
|
|
# ACTIONS
|
|
|
|
.PHONY: install
|
|
install: uv-sync npm-install ## install project
|
|
|
|
.PHONY: update
|
|
update: uv-upgrade npm-update ## update project dependencies
|
|
|
|
.PHONY: build
|
|
build: npm-run-build ## build static site in "dist"
|
|
|
|
.PHONY: format
|
|
format: ruff-fix ruff-format npm-run-lint-fix ## format project
|
|
|
|
.PHONY: lint
|
|
lint: ruff ruff-format-check ty npm-run-lint npm-run-type-check ## lint project
|
|
|
|
.PHONY: start
|
|
start: docker-compose-up
|
|
|
|
.PHONY: stop
|
|
stop: docker-compose-down
|
|
|
|
.PHONY: logs
|
|
logs: docker-compose-logs
|
|
|
|
.PHONY: migrations
|
|
migrations: tortoise-makemigrations
|
|
|
|
# TOOLS
|
|
|
|
.PHONY: uv-sync
|
|
uv-sync: ## uv sync
|
|
$(UV) sync --active
|
|
|
|
.PHONY: uv-update
|
|
uv-upgrade: ## uv sync upgrade
|
|
$(UV) sync --active --upgrade
|
|
|
|
.PHONY: ruff
|
|
ruff: .venv ## ruff check
|
|
$(RUFF) check
|
|
|
|
.PHONY: ruff-fix
|
|
ruff-fix: .venv ## ruff check (and fix)
|
|
$(RUFF) check --fix --unsafe-fixes
|
|
|
|
.PHONY: ruff-format
|
|
ruff-format: .venv ## ruff format
|
|
$(RUFF) format
|
|
|
|
.PHONY: ruff-format-check
|
|
ruff-format-check: .venv ## ruff format (check only)
|
|
$(RUFF) format --check
|
|
|
|
.PHONY: ty
|
|
ty: .venv ## ty check
|
|
$(TY) check
|
|
|
|
.PHONY: npm-install
|
|
npm-install: ## npm install
|
|
$(NPM) install
|
|
|
|
.PHONY: npm-update
|
|
npm-update: ## npm update
|
|
$(NPM) update
|
|
|
|
.PHONY: npm-run-%
|
|
npm-run-%: node_modules ## npm run (script)
|
|
$(NPM) run $*
|
|
|
|
.PHONY: docker-compose-up
|
|
docker-compose-up: ## docker compose up
|
|
$(DOCKER) compose up -d
|
|
|
|
.PHONY: docker-compose-up-%
|
|
docker-compose-up-%: ## docker compose up (container)
|
|
$(DOCKER) compose up -d $*
|
|
|
|
.PHONY: docker-compose-down
|
|
docker-compose-down: ## docker compose down
|
|
$(DOCKER) compose down --remove-orphans
|
|
|
|
.PHONY: docker-compose-down-%
|
|
docker-compose-down-%: ## docker compose down (container)
|
|
$(DOCKER) compose down --remove-orphans $*
|
|
|
|
.PHONY: docker-compose-logs
|
|
docker-compose-logs: ## docker compose logs
|
|
$(DOCKER) compose logs -f || true
|
|
|
|
.PHONY: docker-build
|
|
docker-build: ## docker build
|
|
$(DOCKER) build . -t $(DOCKER_TAG)
|
|
|
|
.PHONY: docker-run
|
|
docker-run: ## docker run
|
|
touch db.sqlite
|
|
$(DOCKER) run -p $(PORT):5000 -v $(PWD)/db.sqlite:/app/db.sqlite $(DOCKER_TAG)
|
|
|
|
.PHONY: tortoise-%
|
|
tortoise-%: .venv ## tortoise (command)
|
|
$(TORTOISE) --config-file tortoise-dev.json $*
|
|
|
|
.PHONY: psql
|
|
psql: ## psql
|
|
$(PSQL_EXEC_BIN)
|
|
|
|
.PHONY: release-%
|
|
release-%: .venv ## release major/minor/patch
|
|
$(UV) version --bump=$*
|
|
$(NPM) pm version $* --no-git-tag-version || true
|
|
git add pyproject.toml uv.lock package.json
|
|
git commit -m "chore: $$(uv version --short)"
|
|
git tag "release/$$(uv version --short)" -m "$$(uv version)"
|