name: Release
env:
  CI: true
  FORCE_COLOR: 1
on:
  push:
    branches:
      - main
jobs:
  release:
    runs-on: ubuntu-latest
    outputs:
      paths_released: ${{ steps.release.outputs.paths_released }}
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release
        with:
          token: ${{ secrets.GH_TOKEN }}
          command: manifest
          config-file: .github/release-please-config.json
          manifest-file: .github/release-please-manifest.json
          default-branch: main
          release-type: node
  npm:
    needs: release
    if: |
      contains(fromJson(needs.release.outputs.paths_released), 'packages/access-client') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/capabilities') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/did-mailto') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/upload-client') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/upload-api') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/filecoin-client') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/filecoin-api') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/w3up-client')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: pnpm/action-setup@v2.2.3
        with:
          version: 8
      - uses: actions/setup-node@v3
        with:
          node-version: 18
          registry-url: 'https://registry.npmjs.org'
          cache: 'pnpm'
      - run: pnpm install
      - run: pnpm run build
      - run: pnpm -r publish --access=public
        env:
          NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
  docs:
    needs: release
    if: |
      contains(fromJson(needs.release.outputs.paths_released), 'packages/access-client') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/capabilities') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/filecoin-client') ||
      contains(fromJson(needs.release.outputs.paths_released), 'packages/upload-client')
    uses: './.github/workflows/reusable-deploy-docs.yml'
