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

@Field DEFAULT_ENV_VARS = [
    ZENDESK_KEY_AWAL: '6312381f-4a7f-4ef3-bb5a-c825df8c46ef',
    ZENDESK_KEY_ORCHARD: 'ab325f48-8a68-41ff-99e2-b50928a025b5',
    ZENDESK_KEY_SME: 'ab325f48-8a68-41ff-99e2-b50928a025b5', // intentionally same as orchard,
    ZENDESK_TICKET_FORM_IDS_AWAL: '5633146238483', // comma separated list
    ZENDESK_MESSAGING_KEY_AWAL: '24f594c3-063e-4be9-b730-abe737e14e19',
    ZENDESK_MESSAGING_KEY_ORCHARD: 'ab325f48-8a68-41ff-99e2-b50928a025b5',
    POEDITOR_API_TOKEN: "\${POEDITOR_API_TOKEN}"
]

@Field DEFAULT_VARS_BY_ENV = [
    qa: [
        GRAPHQL_URL: 'https://qa-ows-grass.theorchard.io/graphql-router/graphql',
        AUTH0_AUDIENCE: 'https://workstation.qaorch.com/api',
        AUTH0_DOMAIN: 'qalogin.theorchard.com',
        AUTH0_ORG_ID_AWAL: 'org_ZowffAYGJyqvOeIJ',
        AUTH0_ORG_ID_KNR: 'org_DjYoRTjuFgm16ie5',
        AUTH0_ORG_ID_ORCHARD: 'org_vdEfyCAGWYnTkX6G',
        AUTH0_ORG_ID_SME: 'org_HeC7B7QmKZq2mZoE',
        AUTH_TOKEN_INVALIDATION_URL: 'https://qa-ows-grass.theorchard.io/token/store/',
        CDN_URL: 'https://qa-cdn.theorchard.io',
    ],
    uat: [
        GRAPHQL_URL: 'https://uat-ows-grass.theorchard.io/graphql-router/graphql',
        AUTH0_AUDIENCE: 'https://workstation.qaorch.com/api',
        AUTH0_DOMAIN: 'qalogin.theorchard.com',
        AUTH0_ORG_ID_AWAL: 'org_ZowffAYGJyqvOeIJ',
        AUTH0_ORG_ID_KNR: 'org_DjYoRTjuFgm16ie5',
        AUTH0_ORG_ID_ORCHARD: 'org_vdEfyCAGWYnTkX6G',
        AUTH0_ORG_ID_SME: 'org_HeC7B7QmKZq2mZoE',
        CDN_URL: 'https://uat-cdn.theorchard.io'
    ],
    prod: [
        GRAPHQL_URL: 'https://ows-grass.theorchard.io/graphql-router/graphql',
        AUTH0_AUDIENCE: 'https://workstation.theorchard.com/api',
        AUTH0_DOMAIN: 'login.distroauth.com',
        AUTH0_ORG_ID_AWAL: 'org_rliJv1yLn0bK1EPe',
        AUTH0_ORG_ID_KNR: 'org_L5BvKFEg25CeGxM5',
        AUTH0_ORG_ID_ORCHARD: 'org_5iwzH8TjVGfIko8n',
        AUTH0_ORG_ID_SME: 'org_9pNeZYBxcS6lAzyu',
        AUTH_TOKEN_INVALIDATION_URL: 'https://ows-grass.theorchard.io/token/store/',
        CDN_URL: 'https://cdn.theorchard.io',
    ]
]

def call(Map args) {
    def params = Utils.validateParams('suiteAppBuild', args, [
        env: [type: String, required: true],
        envVars: [type: Map, required: false, defaultValue: [:]],
        scriptNames: [type: List, itemType: String, required: false, defaultValue: []],
        nodeVersion: [type: String, required: false],
        detectPackageManager: [type: Boolean, required: false, defaultValue: false]
    ])

    def envVarsByEnv = DEFAULT_VARS_BY_ENV[params.env] ?: [:]
    def ciEnvVars = env.GIT_COMMIT ? [GIT_COMMIT: env.GIT_COMMIT] : [:]
    def envVars = DEFAULT_ENV_VARS + envVarsByEnv + [ENV: params.env] + ciEnvVars + params.envVars
    def scriptNames = params.scriptNames ?: ['build']

    withCredentials([string(credentialsId: 'poeditor-api-token', variable: 'POEDITOR_API_TOKEN')]) {
        if (params.detectPackageManager) {
            packageManagerRun([
                scriptNames: scriptNames,
                envVars: envVars,
                nodeVersion: params.nodeVersion
            ])
        } else {
            yarnRun([
                scriptNames: scriptNames,
                envVars: envVars,
                nodeVersion: params.nodeVersion
            ])
        }
    }
}
