name: Go

on:
  workflow_dispatch:
  pull_request_target:
    branches: [go-rewrite, canary]
  push:
    branches: [go-rewrite, canary, feature/*]
    paths-ignore:
      - README.md
      - .github/workflows/go.yml
      - .gitignore
      - .goreleaser.yml
    tags:
      - "*"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: 1.21
      - name: Install dependencies
        continue-on-error: true
        run: |
          go get -u github.com/golang/dep/cmd/dep
          dep ensure
      - name: Run tests
        continue-on-error: true
        run: |
          go test -v ./__tests__
      - name: Snapshot
        uses: goreleaser/goreleaser-action@v2
        with:
          args: --snapshot --rm-dist
          version: latest
          distribution: goreleaser
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
          UNSPLASH_CLIENT_ID: ${{ secrets.CLIENT_ID }}
          UNSPLASH_CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
          DEBUG: true
      - name: Upload Artifacts
        uses: actions/upload-artifact@v2
        with:
          name: Snapshot
          path: dist

  release:
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/')
    steps:
      - uses: actions/checkout@v3
      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: 1.21

      - name: Test
        run: go test -v ./__tests__

      - name: Release
        uses: goreleaser/goreleaser-action@v2
        with:
          version: latest
          distribution: goreleaser
          args: release --rm-dist
        env:
          DEBUG: false
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          UNSPLASH_CLIENT_ID: ${{ secrets.CLIENT_ID }}
          UNSPLASH_CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
          SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
