# Expects azuresdk-github-pat is set to the PAT for azure-sdk
# Expects the buildtools to be cloned

parameters:
  BaseBranchName: $(Build.SourceBranch)
  PRBranchName: not-specified
  PROwner: azure-sdk
  CommitMsg: not-specified
  RepoOwner: Azure
  RepoName: $(Build.Repository.Name)
  PushArgs:
  WorkingDirectory: $(System.DefaultWorkingDirectory)
  PRTitle: not-specified
  PRBody: ''
  ScriptDirectory: eng/common/scripts
  GHReviewersVariable: ''
  GHTeamReviewersVariable: ''
  GHAssignessVariable: ''
  # Multiple labels seperated by comma, e.g. "bug, APIView"
  PRLabels: ''
  SkipCheckingForChanges: false
  CloseAfterOpenForTesting: false
  OpenAsDraft: false

steps:
- template: /eng/common/pipelines/templates/steps/git-push-changes.yml
  parameters:
    BaseRepoBranch: ${{ parameters.PRBranchName }}
    BaseRepoOwner: ${{ parameters.PROwner }}
    CommitMsg: ${{ parameters.CommitMsg }}
    TargetRepoOwner: ${{ parameters.RepoOwner }}
    TargetRepoName: ${{ parameters.RepoName }}
    PushArgs: ${{ parameters.PushArgs }}
    WorkingDirectory: ${{ parameters.WorkingDirectory }}
    ScriptDirectory: ${{ parameters.ScriptDirectory }}
    SkipCheckingForChanges: ${{ parameters.SkipCheckingForChanges }}

- task: PowerShell@2
  displayName: Create pull request
  condition: and(succeeded(), eq(variables['HasChanges'], 'true'))
  inputs:
    pwsh: true
    workingDirectory: ${{ parameters.WorkingDirectory }}
    filePath: ${{ parameters.ScriptDirectory }}/Submit-PullRequest.ps1
    arguments: >
      -RepoOwner "${{ parameters.RepoOwner }}"
      -RepoName "$(RepoNameWithoutOwner)"
      -BaseBranch "${{ parameters.BaseBranchName }}"
      -PROwner "${{ parameters.PROwner }}"
      -PRBranch "${{ parameters.PRBranchName }}"
      -AuthToken "$(azuresdk-github-pat)"
      -PRTitle "${{ parameters.PRTitle }}"
      -PRBody "${{ coalesce(parameters.PRBody, parameters.CommitMsg, parameters.PRTitle) }}"
      -PRLabels "${{ parameters.PRLabels }}"
      -UserReviewers "$(${{ parameters.GHReviewersVariable }})"
      -TeamReviewers "$(${{ parameters.GHTeamReviewersVariable }})"
      -Assignees "$(${{ parameters.GHAssignessVariable }})"
      -CloseAfterOpenForTesting $${{ coalesce(parameters.CloseAfterOpenForTesting, 'false') }}
      -OpenAsDraft $${{ parameters.OpenAsDraft }}
