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)

          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)

          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 }}
