xref: /expo/docs/scripts/resource-specs-sync.mjs (revision bcc59125)
1*bcc59125SPiotr Szeremetaimport fs from 'fs';
2*bcc59125SPiotr Szeremetaimport fetch from 'node-fetch';
3*bcc59125SPiotr Szeremeta
4*bcc59125SPiotr Szeremetaasync function run() {
5*bcc59125SPiotr Szeremeta  const resourceSpecsSource =
6*bcc59125SPiotr Szeremeta    'https://raw.githubusercontent.com/expo/eas-build/main/public/resource-specs/current.json';
7*bcc59125SPiotr Szeremeta
8*bcc59125SPiotr Szeremeta  console.log(`Fetching resource specs from ${resourceSpecsSource}`);
9*bcc59125SPiotr Szeremeta
10*bcc59125SPiotr Szeremeta  const response = await fetch(resourceSpecsSource);
11*bcc59125SPiotr Szeremeta  if (!response.ok) {
12*bcc59125SPiotr Szeremeta    console.error(`Failed to fetch resource specs from ${resourceSpecsSource}`);
13*bcc59125SPiotr Szeremeta    console.error(`Response status: ${response.status}`);
14*bcc59125SPiotr Szeremeta    console.error(`Response body: ${await response.text()}`);
15*bcc59125SPiotr Szeremeta    return;
16*bcc59125SPiotr Szeremeta  }
17*bcc59125SPiotr Szeremeta
18*bcc59125SPiotr Szeremeta  const data = await response.text();
19*bcc59125SPiotr Szeremeta
20*bcc59125SPiotr Szeremeta  // TODO: is public the correct place for this?
21*bcc59125SPiotr Szeremeta  const resourcePath = 'public/static/resource-specs.json';
22*bcc59125SPiotr Szeremeta
23*bcc59125SPiotr Szeremeta  console.log(`Writing resource specs to ${resourcePath}`);
24*bcc59125SPiotr Szeremeta  await fs.writeFile(resourcePath, data, { encoding: 'utf8' }, () => {});
25*bcc59125SPiotr Szeremeta}
26*bcc59125SPiotr Szeremeta
27*bcc59125SPiotr Szeremetarun();
28