async function downloadArtifacts()

in scripts/download-artifacts.js [54:105]


async function downloadArtifacts (opts) {
  if (typeof opts.version !== 'string') {
    throw new Error('Missing version')
  }

  const log = ora('Checking out spec and test').start()

  log.text = 'Resolving versions'
  let resolved
  try {
    resolved = await resolve(opts.version, opts.hash)
  } catch (err) {
    log.fail(err.message)
    process.exit(1)
  }

  opts.id = opts.id || resolved.id
  opts.hash = opts.hash || resolved.hash
  opts.version = resolved.version

  const info = loadInfo()

  if (info && info.version === opts.version) {
    if (info.hash === opts.hash && info.id === opts.id) {
      log.succeed('The artifact copy present locally is already up to date')
      return
    }
  }

  log.text = 'Cleanup checkouts/opensearch'
  await rm(opensearchFolder)
  await mkdir(opensearchFolder, { recursive: true })

  log.text = 'Downloading artifacts'
  const response = await fetch(resolved.url)
  if (!response.ok) {
    log.fail(`unexpected response ${response.statusText}`)
    process.exit(1)
  }
  await pipeline(response.body, createWriteStream(zipFolder))

  log.text = 'Unzipping'
  await unzip(zipFolder, opensearchFolder)

  log.text = 'Cleanup'
  await rm(zipFolder)

  log.text = 'Update info'
  await writeFile(artifactInfo, JSON.stringify(opts), 'utf8')

  log.succeed('Done')
}