From cb0bf27d2471b1e44d5faf7e93c899136d01c5c3 Mon Sep 17 00:00:00 2001 From: Will Schurman Date: Fri, 15 Mar 2024 12:31:04 -0700 Subject: [PATCH] [expo-updates] Add ability to override build-time fingerprint (#27597) --- packages/expo-updates/CHANGELOG.md | 2 ++ .../utils/build/createFingerprintForBuildAsync.js | 15 ++++++++++++--- .../utils/src/createFingerprintForBuildAsync.ts | 14 +++++++++++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/expo-updates/CHANGELOG.md b/packages/expo-updates/CHANGELOG.md index 5cf66ce8151d5..5211f7862d558 100644 --- a/packages/expo-updates/CHANGELOG.md +++ b/packages/expo-updates/CHANGELOG.md @@ -17,6 +17,8 @@ - Add --version top-level flag and also add handler for missing command in expo-update cli. ([#27296](https://github.com/expo/expo/pull/27296) by [@wschurman](https://github.com/wschurman)) - Add more debug information to runtimeversion:resolve CLI output. ([#27323](https://github.com/expo/expo/pull/27323), [#27387](https://github.com/expo/expo/pull/27387) by [@wschurman](https://github.com/wschurman)) - Added React Native New Architecture support. ([#27216](https://github.com/expo/expo/pull/27216) by [@kudo](https://github.com/kudo)) +- Add ability to override build-time fingerprint. ([#27597](https://github.com/expo/expo/pull/27597) by [@wschurman](https://github.com/wschurman)) + ### 🐛 Bug fixes diff --git a/packages/expo-updates/utils/build/createFingerprintForBuildAsync.js b/packages/expo-updates/utils/build/createFingerprintForBuildAsync.js index a27cb43e997ca..46a0d93269da8 100644 --- a/packages/expo-updates/utils/build/createFingerprintForBuildAsync.js +++ b/packages/expo-updates/utils/build/createFingerprintForBuildAsync.js @@ -35,9 +35,18 @@ async function createFingerprintForBuildAsync(platform, possibleProjectRoot, des // not a policy that needs fingerprinting return; } - const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectRoot, platform); - const fingerprint = await (0, createFingerprintAsync_1.createFingerprintAsync)(projectRoot, platform, workflow, {}); - console.log(JSON.stringify(fingerprint.sources)); + let fingerprint; + const override = process.env.EXPO_UPDATES_FINGERPRINT_OVERRIDE; + if (override) { + console.log(`Using fingerprint from EXPO_UPDATES_FINGERPRINT_OVERRIDE: ${override}`); + fingerprint = { hash: override }; + } + else { + const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectRoot, platform); + const createdFingerprint = await (0, createFingerprintAsync_1.createFingerprintAsync)(projectRoot, platform, workflow, {}); + console.log(JSON.stringify(createdFingerprint.sources)); + fingerprint = createdFingerprint; + } fs_1.default.writeFileSync(path_1.default.join(destinationDir, 'fingerprint'), fingerprint.hash); } exports.createFingerprintForBuildAsync = createFingerprintForBuildAsync; diff --git a/packages/expo-updates/utils/src/createFingerprintForBuildAsync.ts b/packages/expo-updates/utils/src/createFingerprintForBuildAsync.ts index a8fb98fab469c..f89bc6e66f202 100644 --- a/packages/expo-updates/utils/src/createFingerprintForBuildAsync.ts +++ b/packages/expo-updates/utils/src/createFingerprintForBuildAsync.ts @@ -38,10 +38,18 @@ export async function createFingerprintForBuildAsync( return; } - const workflow = await resolveWorkflowAsync(projectRoot, platform); - const fingerprint = await createFingerprintAsync(projectRoot, platform, workflow, {}); + let fingerprint: { hash: string }; - console.log(JSON.stringify(fingerprint.sources)); + const override = process.env.EXPO_UPDATES_FINGERPRINT_OVERRIDE; + if (override) { + console.log(`Using fingerprint from EXPO_UPDATES_FINGERPRINT_OVERRIDE: ${override}`); + fingerprint = { hash: override }; + } else { + const workflow = await resolveWorkflowAsync(projectRoot, platform); + const createdFingerprint = await createFingerprintAsync(projectRoot, platform, workflow, {}); + console.log(JSON.stringify(createdFingerprint.sources)); + fingerprint = createdFingerprint; + } fs.writeFileSync(path.join(destinationDir, 'fingerprint'), fingerprint.hash); }