# https://taskfile.dev

version: "3"

interval: 100ms

vars:
  VERSION:
    sh: cat VERSION

tasks:
  tools:
    platforms: [windows, linux, darwin/arm64, darwin/amd64, openbsd, dragonfly, freebsd, netbsd]
    cmds:
      - go install github.com/go-task/task/v3/cmd/task@latest
      - go install github.com/a-h/templ/cmd/templ@latest

      - platforms: [linux/amd64]
        cmd: test -f site/tailwindcli || wget -O site/tailwindcli https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/v1.7.21/tailwindcss-extra-linux-x64

      - platforms: [linux/arm64]
        cmd: test -f site/tailwindcli || wget -O site/tailwindcli https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/v1.7.21/tailwindcss-extra-linux-arm64

      - platforms: [darwin/arm64]
        cmd: test -f site/tailwindcli || wget -O site/tailwindcli https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/v1.7.21/tailwindcss-extra-macos-arm64

      - platforms: [darwin/amd64]
        cmd: test -f site/tailwindcli || wget -O site/tailwindcli https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/v1.7.21/tailwindcss-extra-macos-x64

      - platforms: [windows]
        cmd: test -f site/tailwindcli || wget -O site/tailwindcli https://github.com/dobicinaitis/tailwind-cli-extra/releases/download/v1.7.21/tailwindcss-extra-windows-x64.exe

      - platforms: [openbsd, dragonfly, freebsd, netbsd]
        cmd: pnpm add tailwindcss @tailwindcss/container-queries @tailwindcss/typography daisyui

      - platforms: [openbsd, dragonfly, freebsd, netbsd]
        cmd: test -f site/tailwindcli || (echo "#!/bin/sh" > site/tailwindcli  && echo "tailwindcss $@" >> site/tailwindcli)

      - chmod +x site/tailwindcli
      - go install github.com/valyala/quicktemplate/qtc@latest

  version:
    cmds:
      - echo {{.VERSION}}

  qtc:
    sources:
      - "**/*.qtpl"
    generates:
      - "**/*.qtpl.go"
    cmds:
      - qtc

  build:
    deps:
      - qtc
    sources:
      - VERSION
      - "**/*.qtpl"
      - "**/package.json"
      - "**/*.ts"
    generates:
      - "bundles/**/*"
    cmds:
      - go run build/cmd/build/main.go
      - cp -r bundles/* site/static/js/
      - mkdir -p library/dist/
      - cp -r bundles/* library/dist/
      - mkdir -p site/static/librarySource
      - rm -rf site/static/librarySource/*
      - cp -r library/src/* site/static/librarySource/

  libpub:
    dir: library
    requires:
      vars: [VERSION]
    deps:
      - build
    cmds:
      - git push origin
      - git tag v{{.VERSION}}
      - git push origin --tags
      - pnpm i
      - pnpm build
      - npm publish --access public
      - curl https://purge.jsdelivr.net/gh/starfederation/datastar/bundles/datastar.js
      - git push origin --tags
      - GOPROXY=proxy.golang.org go list -m github.com/starfederation/datastar@v{{.VERSION}}
      - task: deploy

  css:
    dir: site
    sources:
      - "**/*.templ"
      - "**/*.md"
      - "**/*.go"
    generates:
      - "static/css/site.css"

    cmds:
      - ./tailwindcli build -i src/css/site.css -o static/css/site.css

  templ:
    env:
      TEMPL_EXPERIMENT: rawgo
    generates:
      - "**/*_templ.go"
    sources:
      - "**/*.templ"
    cmds:
      - templ generate .

  kill:
    method: none
    cmds:
      - fuser -k 8080/tcp > /dev/null 2>&1 || true

  support:
    sources:
      - "**/*.templ"
      - "**/*.go"
      - "**/*.md"
      - site/static/**/*
    generates:
      - ./datastar-website
    deps:
      - kill
      - build
      - templ
      - css

  site:
    method: none
    desc: build and run site
    deps:
      - support
    cmds:
      - go mod tidy
      - go build -o ./datastar-website "site/cmd/site/main.go"

  deploy:
    method: none
    deps:
      - support
    cmds:
      - fly deploy --local-only

  test:
    dir: site/smoketests
    deps:
      - support
    cmds:
      - go test -v

  default:
    cmds:
      - task: site
      - ./datastar-website
