async function downloadArtifacts()

in scripts/download-artifacts.js [38:111]


async function downloadArtifacts (localTests) {
  const log = ora('Checking out spec and test').start()

  const { GITHUB_TOKEN } = process.env

  log.text = 'Clean tests folder'
  await rimraf(testYamlFolder)
  await mkdir(testYamlFolder, { recursive: true })

  log.text = 'Fetching test YAML files'

  if (localTests) {
    log.text = `Copying local tests from ${localTests}`
    await cp(localTests, testYamlFolder, { recursive: true })
  } else {
    if (!GITHUB_TOKEN) {
      log.fail("Missing required environment variable 'GITHUB_TOKEN'")
      process.exit(1)
    }

    let response = await fetch('https://api.github.com/repos/elastic/elasticsearch-clients-tests/zipball/main', {
      headers: {
        Authorization: `Bearer ${GITHUB_TOKEN}`,
        Accept: "application/vnd.github+json",
      }
    })

    if (!response.ok) {
      log.fail(`unexpected response ${response.statusText}`)
      process.exit(1)
    }

    log.text = 'Downloading tests zipball'
    await pipeline(response.body, createWriteStream(zipFile))

    log.text = 'Unzipping tests'
    await unzip(zipFile, testYamlFolder)

    log.text = 'Cleanup'
    await rimraf(zipFile)
  }

  log.text = 'Fetching Elasticsearch spec info'
  await rimraf(specFolder)
  await mkdir(specFolder, { recursive: true })

  response = await fetch('https://artifacts-api.elastic.co/v1/versions')
  let data = await response.json()
  const latest = data.versions[data.versions.length - 1]
  response = await fetch(`https://artifacts-api.elastic.co/v1/versions/${latest}`)
  data = await response.json()
  const latestBuild = data.version.builds
    .filter(build => build.projects.elasticsearch !== null)
    .sort((a, b) => new Date(b.start_time) - new Date(a.start_time))[0]

  const buildZip = Object.keys(latestBuild.projects.elasticsearch.packages)
    .find(key => key.startsWith('rest-resources-zip-') && key.endsWith('.zip'))
  const zipUrl = latestBuild.projects.elasticsearch.packages[buildZip].url

  log.test = 'Fetching Elasticsearch spec zip'
  response = await fetch(zipUrl)

  log.text = 'Downloading spec zip'
  const specZipFile = join(specFolder, 'rest-api-spec.zip')
  await pipeline(response.body, createWriteStream(specZipFile))

  log.text = 'Unzipping spec'
  await unzip(specZipFile, specFolder)

  log.text = 'Cleanup'
  await rimraf(specZipFile)

  log.succeed('Done')
}