# https://taskfile.dev version: "3" vars: GREETING: Hello, World! env: DEFAULT_GROUP: Home PRODUCTION: false API_PORT: 9000 API_DOCS: True TOKEN_TIME: 256 # hours # mailplit SMTP config # start dev:services to use mailpit SMTP_HOST: localhost SMTP_PORT: 1025 SMTP_FROM_NAME: MealieDev SMTP_FROM_EMAIL: mealie@example.com SMTP_AUTH_STRATEGY: NONE BASE_URL: http://localhost:3000 LANG: en-US # loads .env file if it exists dotenv: - .env - .dev.env tasks: docs:gen: desc: runs the API documentation generator cmds: - poetry run python dev/code-generation/gen_docs_api.py docs: desc: runs the documentation server dir: docs deps: - docs:gen cmds: - poetry run python -m mkdocs serve setup:ui: desc: setup frontend dependencies dir: frontend cmds: - yarn install setup:py: desc: setup python dependencies cmds: - poetry install --with main,dev,postgres - poetry run pre-commit install setup:model: desc: setup nlp model vars: MODEL_URL: https://github.com/mealie-recipes/nlp-model/releases/download/v1.0.0/model.crfmodel OUTPUT: ./mealie/services/parser_services/crfpp/model.crfmodel sources: # using pyproject.toml as the dependency since this should only ever need to run once # during setup. There is perhaps a better way to do this. - ./pyproject.toml generates: - ./mealie/services/parser_services/crfpp/model.crfmodel cmds: - curl -L0 {{ .MODEL_URL }} --output {{ .OUTPUT }} setup: desc: setup all dependencies deps: - setup:ui - setup:py - setup:model dev:generate: desc: run code generators cmds: - poetry run python dev/code-generation/main.py - task: py:format dev:services: desc: starts postgres and mailpit containers dir: docker cmds: - docker compose -f docker-compose.dev.yml up dev:clean: desc: cleans up dev environment !! removes all data files !! vars: DEV_DATA: "" cmds: - rm -r ./dev/data/recipes/ - rm -r ./dev/data/users/ - rm -f ./dev/data/mealie*.db - rm -f ./dev/data/mealie.log - rm -f ./dev/data/.secret py:mypy: desc: runs python type checking cmds: - poetry run mypy mealie py:test: desc: runs python tests (support args after '--') cmds: - poetry run pytest {{ .CLI_ARGS }} py:format: desc: runs python code formatter cmds: - poetry run ruff format . py:lint: desc: runs python linter cmds: - poetry run ruff check mealie py:check: desc: runs all linters, type checkers, and formatters deps: - py:format - py:lint - py:mypy - py:test py:coverage: desc: runs python coverage and generates html report cmds: - poetry run pytest - poetry run coverage report -m - poetry run coveragepy-lcov - poetry run coverage html - open htmlcov/index.html py: desc: runs the backend server cmds: - poetry run python mealie/app.py py:postgres: desc: runs the backend server configured for containerized postgres env: DB_ENGINE: postgres POSTGRES_USER: mealie POSTGRES_PASSWORD: mealie POSTGRES_SERVER: localhost POSTGRES_PORT: 5432 POSTGRES_DB: mealie cmds: - poetry run python mealie/app.py py:migrate: desc: generates a new database migration file e.g. task py:migrate -- "add new column" cmds: - poetry run alembic revision --autogenerate -m "{{ .CLI_ARGS }}" - task: py:format ui:build: desc: builds the frontend in frontend/dist dir: frontend cmds: - yarn build ui:lint: desc: runs the frontend linter dir: frontend cmds: - yarn lint ui:test: desc: runs the frontend tests dir: frontend cmds: - yarn test ui:check: desc: runs all frontend checks deps: - ui:lint - ui:test ui: desc: runs the frontend server dir: frontend cmds: - yarn run dev docker:prod: desc: builds and runs the production docker image locally dir: docker cmds: - docker compose -f docker-compose.yml -p mealie up -d --build