---
name: Version Bump

on:
  workflow_dispatch:
    inputs:
      version_number:
        description: "New Version"
        required: true
  workflow_call:
    inputs:
      version_number:
        required: true
        type: string

jobs:
  bump_version:
    name: "Create version_bump_${{ github.event.inputs.version_number }} branch"
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout Branch
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3

      - name: Login to Azure - CI Subscription
        uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.7
        with:
         creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}

      - name: Retrieve secrets
        id: retrieve-secrets
        uses: bitwarden/gh-actions/get-keyvault-secrets@main
        with:
          keyvault: "bitwarden-ci"
          secrets: "github-gpg-private-key, github-gpg-private-key-passphrase"

      - name: Import GPG key
        uses: crazy-max/ghaction-import-gpg@d6f3f49f3345e29369fe57596a3ca8f94c4d2ca7 # v5.4.0
        with:
          gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }}
          passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }}
          git_user_signingkey: true
          git_commit_gpgsign: true

      - name: Create Version Branch
        run: git switch -c version_bump_${{ github.event.inputs.version_number }}

      - name: Bump Version - Android XML
        uses: bitwarden/gh-actions/version-bump@main
        with:
          version: ${{ github.event.inputs.version_number }}
          file_path: "./src/Android/Properties/AndroidManifest.xml"

      - name: Bump Version - iOS.Autofill
        uses: bitwarden/gh-actions/version-bump@main
        with:
          version: ${{ github.event.inputs.version_number }}
          file_path: "./src/iOS.Autofill/Info.plist"

      - name: Bump Version - iOS.Extension
        uses: bitwarden/gh-actions/version-bump@main
        with:
          version: ${{ github.event.inputs.version_number }}
          file_path: "./src/iOS.Extension/Info.plist"

      - name: Bump Version - iOS.ShareExtension
        uses: bitwarden/gh-actions/version-bump@main
        with:
          version: ${{ github.event.inputs.version_number }}
          file_path: "./src/iOS.ShareExtension/Info.plist"

      - name: Bump Version - iOS
        uses: bitwarden/gh-actions/version-bump@main
        with:
          version: ${{ github.event.inputs.version_number }}
          file_path: "./src/iOS/Info.plist"

      - name: Setup git
        run: |
          git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com"
          git config --local user.name "bitwarden-devops-bot"

      - name: Check if version changed
        id: version-changed
        run: |
          if [ -n "$(git status --porcelain)" ]; then
            echo "changes_to_commit=TRUE" >> $GITHUB_OUTPUT
          else
            echo "changes_to_commit=FALSE" >> $GITHUB_OUTPUT
            echo "No changes to commit!";
          fi

      - name: Commit files
        if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }}
        run: git commit -m "Bumped version to ${{ github.event.inputs.version_number }}" -a

      - name: Push changes
        if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }}
        run: git push -u origin version_bump_${{ github.event.inputs.version_number }}

      - name: Create Version PR
        if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }}
        env:
          PR_BRANCH: "version_bump_${{ github.event.inputs.version_number }}"
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
          BASE_BRANCH: master
          TITLE: "Bump version to ${{ github.event.inputs.version_number }}"
        run: |
          gh pr create --title "$TITLE" \
            --base "$BASE" \
            --head "$PR_BRANCH" \
            --label "version update" \
            --label "automated pr" \
            --body "
              ## Type of change
              - [ ] Bug fix
              - [ ] New feature development
              - [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
              - [ ] Build/deploy pipeline (DevOps)
              - [X] Other

              ## Objective
              Automated version bump to ${{ github.event.inputs.version_number }}"