version: "3" tasks: download: desc: Download pinned client-side libs cmds: - go run cmd/downloader/main.go status: - test -f assets/js/datastar/datastar.js - test -f assets/css/daisyui/daisyui.js build:templ: desc: Compile .templ files to Go cmds: - go tool templ generate sources: - "**/*.templ" generates: - "**/*_templ.go" build:styles: desc: Build TailwindCSS styles cmds: - go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify sources: - "assets/css/input.css" - "**/*.templ" - "**/*.go" generates: - "assets/css/output.css" build: desc: Production build to bin/games cmds: - go build -o bin/games . deps: - download - build:templ - build:styles live:templ: desc: Watch and recompile .templ files cmds: - go tool templ generate -watch live:styles: desc: Watch and rebuild TailwindCSS styles cmds: - go tool gotailwind -i assets/css/input.css -o assets/css/output.css -w live:server: desc: Run server with hot-reload via air cmds: - | go tool air \ -build.cmd "go build -tags=dev -o tmp/bin/games ." \ -build.bin "tmp/bin/games" \ -build.exclude_dir "data,bin,tmp,deploy" \ -build.include_ext "go,templ" \ -misc.clean_on_exit "true" live: desc: Dev mode with hot-reload deps: - download - live:templ - live:styles - live:server test: desc: Run the test suite cmds: - go test ./... lint: desc: Run golangci-lint cmds: - golangci-lint run run: desc: Build and run the server cmds: - ./bin/games deps: - build default: desc: Run the default task (live) cmds: - task: live