name: (Runtime) Publish Prereleases Manual

on:
  workflow_dispatch:
    inputs:
      prerelease_commit_sha:
        required: true

env:
  TZ: /usr/share/zoneinfo/America/Los_Angeles

jobs:

  publish_prerelease_canary:
    name: Publish to Canary channel
    uses: facebook/react/.github/workflows/runtime_prereleases.yml@main
    with:
      commit_sha: ${{ inputs.prerelease_commit_sha }}
      release_channel: stable
      # The tags to use when publishing canaries. The main one we should
      # always include is "canary" but we can use multiple (e.g. alpha,
      # beta, rc). To declare multiple, use a comma-separated string, like
      # this:
      #   dist_tag: "canary,alpha,beta,rc"
      #
      # TODO: We currently tag canaries with "next" in addition to "canary"
      # because this used to be called the "next" channel and some
      # downstream consumers might still expect that tag. We can remove this
      # after some time has elapsed and the change has been communicated.
      dist_tag: canary,next,rc
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

  publish_prerelease_experimental:
    name: Publish to Experimental channel
    uses: facebook/react/.github/workflows/runtime_prereleases.yml@main
    # NOTE: Intentionally running these jobs sequentially because npm
    # will sometimes fail if you try to concurrently publish two
    # different versions of the same package, even if they use different
    # dist tags.
    needs: publish_prerelease_canary
    with:
      commit_sha: ${{ inputs.prerelease_commit_sha }}
      release_channel: experimental
      dist_tag: experimental
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}