name: Bump Dev Version
on:
  workflow_dispatch: # Allows for manual triggering if needed
    inputs:
      updateType:
        description: "Update Type"
        required: true
        default: "dev"
        type: choice
        options:
          - dev
          - patch+dev
          - minor+dev
          - major+dev
      draft:
        description: "PR as Draft"
        required: false
        type: boolean
        default: false
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron: "0 8 * * *" # Run every day at midnight Pacific Time
permissions:
  contents: write
  pull-requests: write

env:
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
  flutter-prep:
    uses: ./.github/workflows/flutter-prep.yaml
  bump-version:
    needs: flutter-prep
    if: ${{ github.repository == 'flutter/devtools' }}
    name: Bump Version
    runs-on: ubuntu-latest
    steps:
      - name: git clone devtools
        uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3
        with:
          ref: master

      - name: Load Cached Flutter SDK
        uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0
        with:
          path: |
            ./tool/flutter-sdk
          key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }}

      - name: setup git config
        run: |

          git config user.name "DevTools Workflow Bot"
          git config user.email "dart-devtool-workflow-bot@google.com"

      - name: Bump the Version
        id: version-bump
        run: |
          set -ex

          # Ensure we are using the Dart executable from the Flutter SDK
          export PATH=`pwd`/tool/flutter-sdk/bin/cache/dart-sdk/bin:`pwd`/tool/flutter-sdk/bin:`pwd`/bin:$PATH

          pushd tool/
          dart pub get
          popd

          # Ensure the dt command is available
          export PATH="$PATH":`pwd`/tool/bin

          ORIGINAL_VERSION=$(dt update-version current-version | tail -1)

          if [ -z "$UPDATE_TYPE" ]; then
            # If $UPDATE_TYPE is not set, then assume it is dev
            UPDATE_TYPE="dev"
          fi

          # If there is a major, minor, or patch bump, do it.

          if [ "$UPDATE_TYPE" == "patch+dev" ]; then
            dt update-version auto --type patch
            dt update-version auto --type dev
          elif [ "$UPDATE_TYPE" == "minor+dev" ]; then
            dt update-version auto --type minor
            dt update-version auto --type dev
          elif [ "$UPDATE_TYPE" == "major+dev" ]; then
            dt update-version auto --type major
            dt update-version auto --type dev
          elif [ "$UPDATE_TYPE" == "dev" ]; then
            if ! echo "$ORIGINAL_VERSION" | grep -Eq "\-dev\.[0-9]+" ; then
              ERROR_DESCRIPTION="Doing \
            a Dev bump on a release version ($ORIGINAL_VERSION) is not supported. \
            Ensure that that current version has been properly bumped to a '-dev.*' \
            pre-release version, in order to continue daily dev bumps."

              echo "::error ,title=Cannot do a dev bump on a Release Version ($ORIGINAL_VERSION)::$ERROR_DESCRIPTION" 
              exit 1;
            fi
            dt update-version auto --type dev
          else
            echo "ERROR: UNEXPECTED UPDATE TYPE: $UPDATE_TYPE"
            exit 1
          fi

          NEW_VERSION=$(dt update-version current-version | tail -1)

          echo "COMMIT_MESSAGE=Updating from $ORIGINAL_VERSION to $NEW_VERSION" >> $GITHUB_OUTPUT
        env:
          UPDATE_TYPE: ${{ inputs.updateType }}

      - name: Create the PR
        run: |
          set -ex
          BRANCH_NAME="auto-bump-$(date +%s)"
          # Stage the file, commit and push
          git checkout -b "$BRANCH_NAME"
          git commit -a -m "$COMMIT_MESSAGE"
          git push -u origin "$BRANCH_NAME"

          if [ "$IS_DRAFT" == "true" ]; then
            CREATION_FLAGS="--draft"
          fi

          PR_URL=$(gh pr create --title "$COMMIT_MESSAGE" --body "Automated Version Bump" $CREATION_FLAGS) 

          # Change github credentials back to the actions bot.
          GH_TOKEN="$ORIGINAL_GH_TOKEN"

          gh pr edit $PR_URL $FLAGS --add-label "autosubmit"

        env:
          COMMIT_MESSAGE: ${{ steps.version-bump.outputs.COMMIT_MESSAGE }}
          GH_TOKEN: ${{ secrets.DEVTOOLS_WORKFLOW_BOT_TOKEN }}
          ORIGINAL_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          IS_DRAFT: ${{ inputs.draft == true }}
