expo-updates
Version:
Fetches and manages remotely-hosted assets and updates to your app's JS bundle.
41 lines (32 loc) • 1.57 kB
text/typescript
import assert from 'assert';
import { createFingerprintForBuildAsync } from './createFingerprintForBuildAsync';
import { createManifestForBuildAsync } from './createManifestForBuildAsync';
import { findUpProjectRoot } from './findUpProjectRoot';
(async function () {
const platform = process.argv[2] as 'ios' | 'android';
if (!['ios', 'android'].includes(platform)) {
throw new Error(`Unsupported platform: ${platform}`);
}
const projectRootArg = process.argv[3];
assert(projectRootArg, 'Must provide a valid project root');
const possibleProjectRoot = findUpProjectRoot(projectRootArg);
assert(possibleProjectRoot, 'Must provide a valid project root');
const destinationDir = process.argv[4];
assert(destinationDir, 'Must provide a valid destination directory');
const createUpdatesResourcesMode = process.argv[5];
if (!['all', 'only-fingerprint'].includes(createUpdatesResourcesMode)) {
throw new Error(`Unsupported createUpdatesResourcesMode: ${createUpdatesResourcesMode}`);
}
const entryFileArg = process.argv[6];
await Promise.all([
createUpdatesResourcesMode === 'all'
? createManifestForBuildAsync(platform, possibleProjectRoot, destinationDir, entryFileArg)
: null,
createFingerprintForBuildAsync(platform, possibleProjectRoot, destinationDir),
]);
})().catch((e) => {
// Wrap in regex to make it easier for log parsers (like `@expo/xcpretty`) to find this error.
e.message = `@build-script-error-begin\n${e.message}\n@build-script-error-end\n`;
console.error(e);
process.exit(1);
});