version: "3" env: HBOX_STORAGE_SQLITE_URL: .data/homebox.db?_fk=1 UNSAFE_DISABLE_PASSWORD_PROJECTION: "yes_i_am_sure" tasks: setup: desc: Install dependencies cmds: - go install github.com/swaggo/swag/cmd/swag@latest - cd backend && go mod tidy - cd frontend && pnpm install --shamefully-hoist generate: desc: | Generates collateral files from the backend project including swagger docs and typescripts type for the frontend deps: - db:generate cmds: - cd backend/app/api/static && swag fmt --dir=../ - cd backend/app/api/static && swag init --dir=../,../../../internal,../../../pkgs - | npx swagger-typescript-api \ --no-client \ --modular \ --path ./backend/app/api/static/docs/swagger.json \ --output ./frontend/lib/api/types - python3 ./scripts/process-types.py ./frontend/lib/api/types/data-contracts.ts sources: - "./backend/app/api/**/*" - "./backend/internal/repo/**/*" - "./backend/internal/services/**/*" - "./scripts/process-types.py" generates: - "./frontend/lib/api/types/data-contracts.ts" - "./backend/ent/schema" - "./backend/app/api/static/docs/swagger.json" - "./backend/app/api/static/docs/swagger.yaml" api: desc: Starts the backend api server (depends on generate task) deps: - generate cmds: - cd backend && go run ./app/api/ {{ .CLI_ARGS }} silent: false api:build: cmds: - cd backend && go build ./app/api/ silent: true api:test: cmds: - cd backend && go test ./app/api/ silent: true api:watch: cmds: - cd backend && gotestsum --watch ./... api:coverage: cmds: - cd backend && go test -race -coverprofile=coverage.out -covermode=atomic ./app/... ./internal/... ./pkgs/... -v -cover silent: true test:ci: cmds: - cd backend && go build ./app/api - backend/api & - sleep 5 - cd frontend && pnpm run test:ci silent: true frontend:watch: desc: Starts the vitest test runner in watch mode cmds: - cd frontend && pnpm vitest --watch frontend: desc: Run frontend development server cmds: - cd frontend && pnpm dev db:generate: desc: Run Entgo.io Code Generation cmds: - | cd backend && go generate ./... \ --template=ent/schema/templates/has_id.tmpl sources: - "./backend/ent/schema/**/*" generates: - "./backend/ent/" db:migration: desc: Runs the database diff engine to generate a SQL migration files deps: - db:generate cmds: - cd backend && go run app/migrations/main.go {{ .CLI_ARGS }}