diff --git a/CHANGELOG.md b/CHANGELOG.md index d02603448e..6229ce306a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ This is the log of notable changes to EAS CLI and related packages. ### 🧹 Chores +- More branch map utility functions. ([#2001](https://github.com/expo/eas-cli/pull/2001) by [@quinlanj](https://github.com/quinlanj)) + ## [4.1.2](https://github.com/expo/eas-cli/releases/tag/v4.1.2) - 2023-08-10 ### 🧹 Chores diff --git a/packages/eas-cli/src/rollout/__tests__/branch-mapping-test.ts b/packages/eas-cli/src/rollout/__tests__/branch-mapping-test.ts index 58b1aa69bc..ff60d00b3a 100644 --- a/packages/eas-cli/src/rollout/__tests__/branch-mapping-test.ts +++ b/packages/eas-cli/src/rollout/__tests__/branch-mapping-test.ts @@ -18,6 +18,7 @@ import { assertRolloutBranchMapping, composeRollout, createRolloutBranchMapping, + doesTargetRollout, editRolloutBranchMapping, getRollout, getRolloutInfo, @@ -33,6 +34,17 @@ import { standardBranchMapping, } from './fixtures'; +describe(doesTargetRollout, () => { + it('detects whether a runtime targets a constrained rollout', () => { + expect(doesTargetRollout(rolloutBranchMapping, '1.0.0')).toBe(true); + expect(doesTargetRollout(rolloutBranchMapping, '2.0.0')).toBe(false); + }); + it('should always return true if the rollout is unconstrained', () => { + expect(doesTargetRollout(rolloutBranchMappingLegacy, '1.0.0')).toBe(true); + expect(doesTargetRollout(rolloutBranchMappingLegacy, '2.0.0')).toBe(true); + }); +}); + describe(composeRollout, () => { it('composes a rollout', () => { const rollout = getRollout(channelInfoWithBranches); diff --git a/packages/eas-cli/src/rollout/branch-mapping.ts b/packages/eas-cli/src/rollout/branch-mapping.ts index f51966c56e..a56ce8ceac 100644 --- a/packages/eas-cli/src/rollout/branch-mapping.ts +++ b/packages/eas-cli/src/rollout/branch-mapping.ts @@ -257,6 +257,17 @@ export function isRollout(channelInfo: ChannelBasicInfo): boolean { return isRolloutBranchMapping(branchMapping); } +export function doesTargetRollout( + branchMapping: RolloutBranchMapping, + runtimeVersion: string +): boolean { + const rolloutInfo = getRolloutInfoFromBranchMapping(branchMapping); + if (!isConstrainedRolloutInfo(rolloutInfo)) { + return true; + } + return rolloutInfo.runtimeVersion === runtimeVersion; +} + export function createRolloutBranchMapping({ defaultBranchId, rolloutBranchId,