Files
blog/Taskfile.yml
2026-02-20 06:24:59 -05:00

119 lines
2.6 KiB
YAML

version: "3"
method: checksum
vars:
# Go binary
GO_CMD:
sh: command -v go >/dev/null 2>&1 && echo "go"
# Go build flags
GO_FLAGS: '-ldflags="-s -w"'
# Server binary name
SERVER_BINARY: server
# Frontend binary name
FRONTEND_BINARY: frontend
# File extension
EXT: '{{ if eq .OS "windows" }}.exe{{ end }}'
# Tailwind binary
TAILWIND_CMD: "tailwindcss"
tasks:
# Development tasks
dev:
desc: Start development server with hot reload
cmds:
- task --parallel tailwind templ
run:
env:
STRAPI_TOKEN: 918aad014c203e302ee185628a0591b1bc875bd999cb9cd7b9c81fac68f275cda75ea806c7ea7b352253a680838887b65a09a9904c6a140bfb3b794d19083c2659d5ad210bca8044436d67b3f6db4d7262168f66b5748b367e8d3239167c185f3b0f0932f8e10800bfb6ad0355ec7d5ca1edbe0d06814bee0a92ab7ebcef3022
desc: Build and run go server binary
deps: [build, build-css]
cmds:
- "./dist/{{ .SERVER_BINARY }}{{ .EXT }}"
# Build tasks
build:
desc: Build go server binary
deps: [dist]
sources:
- "**/*.go"
- "go.mod"
- "go.sum"
generates:
- dist/server
cmds:
- "{{ .GO_CMD }} build {{ .GO_FLAGS }} -o dist/{{ .SERVER_BINARY }}{{ .EXT }} cmd/main.go"
build-queries:
desc: Builds GraphQL queries
cmds:
- "{{ .GO_CMD }} run github.com/Khan/genqlient"
build-css:
desc: Build CSS once
sources:
- web/static/css/input.css
- tailwind.config.js
generates:
- web/static/css/style.css
cmds:
- "{{ .TAILWIND_CMD }} -i ./web/static/css/input.css -o ./web/static/css/style.css"
build-all:
desc: Build everything (Go binary + CSS)
deps: [build, build-css, build-queries]
# Watch tasks
templ:
desc: Run templ with integrated server and hot reload
cmds:
- 'templ generate --watch --proxy="http://localhost:8080" --cmd="go run ./cmd/web/main.go" --open-browser=false'
tailwind:
desc: Watch TailwindCSS changes
cmds:
- "{{ .TAILWIND_CMD }} -i ./web/static/css/input.css -o ./web/static/css/style.css --watch"
# Utility tasks
deps:
desc: Install dependencies
cmds:
- "{{ .GO_CMD }} mod download"
clean:
desc: Clean build artifacts
cmds:
- rm -rf dist/
- rm -f web/static/css/style.css
dist:
internal: true
silent: true
status:
- test -d dist/
cmds:
- mkdir -p dist/
# Testing and linting
test:
desc: Run tests
cmds:
- "{{ .GO_CMD }} test ./..."
fmt:
desc: Format Go code
cmds:
- "{{ .GO_CMD }} fmt ./..."
vet:
desc: Run go vet
cmds:
- "{{ .GO_CMD }} vet ./..."