name: Release

# how to trigger: https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
on:
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always

jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Install cargo-release
        run: cargo install cargo-release

      - name: Setup release
        run: |
          # Set the commit author to the github-actions bot. See discussion here for more information:
          # https://github.com/actions/checkout/issues/13#issuecomment-724415212
          # https://github.community/t/github-actions-bot-email-address/17204/6
          git config user.name 'Bevy Auto Releaser'
          git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
          # release: remove the dev suffix, like going from 0.X.0-dev to 0.X.0
          # --workspace: updating all crates in the workspace
          # --no-publish: do not publish to crates.io
          # --execute: not a dry run
          # --no-tag: do not push tag for each new version
          # --no-push: do not push the update commits
          # --dependent-version upgrade: change 0.X.0-dev in internal dependencies to 0.X.0
          # --exclude: ignore those packages
          cargo release release \
            --workspace \
            --no-publish \
            --execute \
            --no-tag \
            --no-confirm \
            --no-push \
            --dependent-version upgrade \
            --exclude ci \
            --exclude errors \
            --exclude bevy-ios-example \
            --exclude spancmp \
            --exclude build-wasm-example

      - name: Create PR
        uses: peter-evans/create-pull-request@v4
        with:
          delete-branch: true
          base: "main"
          title: "Preparing Next Release"
          body: |
            Preparing next release
            This PR has been auto-generated
