import groovy.transform.Field
import com.sonymusic.Utils

@Field PR_REVIEW_ECR_REPO = '086679231553.dkr.ecr.us-east-1.amazonaws.com/pull-request-review-tools'
@Field SHARED_PR_ROLE = 'shared-pull-request-review-role'
@Field SHARED_ACCOUNT_ID = '086679231553'


def call(Map args = [:]) {
    def params = Utils.validateParams('aiPullRequestReview', args, [
        githubRepoName: [type: String, required: true, defaultValue: (env.GIT_URL =~ "https://github.com/(.*)\\.git")[0][1]],
        projectType: [type: String, required: false, defaultValue: 'generic', allowedValues: ['generic', 'terraform', 'database', 'python', 'javascript', 'php']],
        reviewImage: [type: String, required: false, defaultValue: PR_REVIEW_ECR_REPO],
        reviewImageTag: [type: String, required: false, defaultValue: 'latest'],
    ])

    review(params)
}

def review(Map params) {

    withCredentials([
        string(credentialsId: 'ai-pull-request-review-github-token', variable: 'GITHUB_TOKEN'),
    ]) {
    withAWS(roleAccount: SHARED_ACCOUNT_ID, role: SHARED_PR_ROLE, roleSessionName: env.BUILD_TAG, useNode: true ) {
        withEcr {
            sh """
                docker run --rm \
                    --pull always \
                    -e GITHUB_TOKEN="\${GITHUB_TOKEN}" \
                    -e GITHUB_REPO_NAME="${params.githubRepoName}" \
                    -e GITHUB_PR_NUMBER="${env.CHANGE_ID}" \
                    -e PROJECT_TYPE="${params.projectType}" \
                    -e Environment='prod' \
                    -e AWS_ACCESS_KEY_ID \
                    -e AWS_SECRET_ACCESS_KEY \
                    -e AWS_SESSION_TOKEN \
                    ${params.reviewImage}:${params.reviewImageTag}
                """
           }
        }
    }
}
