All files config.ts

96.96% Statements 32/33
90.9% Branches 10/11
100% Functions 1/1
100% Lines 27/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62    2x 2x   2x   13x 13x 12x 12x 11x 11x 10x 10x       9x 9x   8x 1x     2x       7x 10x 10x 2x 1x     1x 1x             5x 5x   5x                         2x  
import type { ProjectMap } from './types'
 
import * as core from '@actions/core'
import * as github from '@actions/github'
 
export function getConfig() {
  /** Retrieve required inputs */
  const githubToken = core.getInput('github-token')
  if (!githubToken) throw new Error('Missing input github-token')
  const labelMapping = core.getInput('project-label-mapping')
  if (!labelMapping) throw new Error('Missing input project-label-mapping')
  const accountId = core.getInput('cloudflare-account-id')
  if (!accountId) throw new Error('Missing input cloudflare-account-id')
  const cloudflareApiToken = core.getInput('cloudflare-api-token')
  if (!cloudflareApiToken) throw new Error('Missing input cloudflare-api-token')
 
  /** Parse project mapping */
  let parsedLabelMapping
  try {
    parsedLabelMapping = JSON.parse(labelMapping) as ProjectMap[]
 
    if (!Array.isArray(parsedLabelMapping)) {
      throw new Error('Invalid input project-label-mapping')
    }
  } catch (e) {
    throw new Error('Invalid input project-label-mapping')
  }
 
  /** Ensure project mapping has required properties */
  for (let i = 0; i < parsedLabelMapping.length; i++) {
    const projectMap = parsedLabelMapping[i]
    if (!projectMap.label || !projectMap.project) {
      if (!projectMap.label)
        throw new Error(
          `Invalid input project-label-mapping, missing label property at index ${i}`
        )
      if (!projectMap.project)
        throw new Error(
          `Invalid input project-label-mapping, missing project property at index ${i}`
        )
    }
  }
 
  /** Ensure pull request context */
  const pullRequest = github.context.payload.pull_request
  Iif (!pullRequest) throw new Error('Missing pull request context')
 
  return {
    projectMap: parsedLabelMapping,
    github: {
      token: githubToken,
      pullRequest
    },
    cloudflare: {
      accountId,
      cloudflareApiToken
    }
  }
}
 
export default getConfig