import com.sonymusic.*

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

    def pnpmRunString = params.scriptNames.collect{"pnpm ${it}"}.join("\n")

    nodeSh(
        user: 'root', // Needed for corepack activation
        envVars: params.envVars,
        nodeVersion: params.nodeVersion,
        script: """
            set -e
            corepack enable pnpm
            # pnpm 10.34.2+ ignores env vars in a committed project .npmrc auth field, so set the token in user config
            pnpm config set "//npm.pkg.github.com/:_authToken" "\$GITHUB_NPM_TOKEN"
            pnpm install --frozen-lockfile
            ${pnpmRunString}
        """
    )
}
