name: Publish to pub.dev

on:
  push:
    tags:
    # must align with the tag-pattern configured on pub.dev, often just replace
    #  with [0-9]+.[0-9]+.[0-9]+*
    - '[0-9]+.[0-9]+.[0-9]+*' # tag-pattern on pub.dev: ''
    # If you prefer tags like '1.2.3', without the 'v' prefix, then use:
    # - '[0-9]+.[0-9]+.[0-9]+*' # tag-pattern on pub.dev: ''
    # If your repository contains multiple packages consider a pattern like:
    # - 'my_package_name-v[0-9]+.[0-9]+.[0-9]+*'

# Publish using the reusable workflow from dart-lang.
jobs:
  publish:
    permissions:
      id-token: write # Required for authentication using OIDC
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Get flutter version
        run: echo "flutter_version=`cat .flutter_version`" >> $GITHUB_ENV
        id: flutter_version
      - uses: subosito/flutter-action@v2
        with:
          channel: "stable"
          cache: true
          flutter-version: ${{ env.flutter_version }}
      - run: flutter pub get
      - name: Create publishing token (flutter)
        run: |
          set -eo pipefail
          PUB_TOKEN=$(curl --retry 5 --retry-connrefused -sLS "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=https://pub.dev" -H "User-Agent: actions/oidc-client" -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" | jq -r '.value')
          echo "PUB_TOKEN=${PUB_TOKEN}" >> $GITHUB_ENV
          export PUB_TOKEN
          flutter pub token add https://pub.dev --env-var PUB_TOKEN
      - run: flutter pub publish --force # --force because of the web dependency
