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@3df4ab11eba7bda6032a0b82a6bb43b11571feac
        with:
          ref: master

      - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d
      - name: Load Cached Flutter SDK
        uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
        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
          pushd tool/
          dart pub get
          popd

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

          ORIGINAL_VERSION=$(devtools_tool 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
            devtools_tool update-version auto --type patch
            devtools_tool update-version auto --type dev
          elif [ "$UPDATE_TYPE" == "minor+dev" ]; then
            devtools_tool update-version auto --type minor
            devtools_tool update-version auto --type dev
          elif [ "$UPDATE_TYPE" == "major+dev" ]; then
            devtools_tool update-version auto --type major
            devtools_tool 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
            devtools_tool update-version auto --type dev
          else
            echo "ERROR: UNEXPECTED UPDATE TYPE: $UPDATE_TYPE"
            exit 1
          fi

          NEW_VERSION=$(devtools_tool 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 }}
