From 9ee3aecc6cc2097669857c80ef85718f6a9ed856 Mon Sep 17 00:00:00 2001
From: Chris Thoburn <runspired@users.noreply.github.com>
Date: Tue, 14 Jan 2025 18:27:15 -0800
Subject: [PATCH] fix: release script should find channel from branch too

---
 release/utils/channel.ts | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/release/utils/channel.ts b/release/utils/channel.ts
index 3beb53e383..f65f59b9b7 100644
--- a/release/utils/channel.ts
+++ b/release/utils/channel.ts
@@ -59,12 +59,20 @@ export type RELEASE_TYPE = 'major' | 'minor' | 'patch';
 
 const RELEASE_BRANCH_REGEXP = /^release\-(\d+)\-(\d+)/;
 const LTS_BRANCH_REGEXP = /^lts\-(\d+)\-(\d+)/;
+const TRAIN_BRANCH_REGEXP = /^v(\d+)\-(main|beta|release)/;
 
 export function channelForBranch(branch: string, currentVersion: SEMVER_VERSION, force: boolean): CHANNEL {
   if (branch === 'main') return 'canary';
   if (branch === 'beta' || branch === 'release' || branch === 'lts') return branch;
   if (RELEASE_BRANCH_REGEXP.test(branch)) return 'release-prev';
   if (LTS_BRANCH_REGEXP.test(branch)) return 'lts-prev';
+  if (TRAIN_BRANCH_REGEXP.test(branch)) {
+    const [, _major, branchType] = branch.match(TRAIN_BRANCH_REGEXP) as [string, number, 'main' | 'beta' | 'release'];
+    if (branchType === 'main') return 'canary';
+    if (branchType === 'beta') return 'beta';
+    if (branchType === 'release') return 'release';
+    throw new Error(`Unexpected branch type '${branchType}' found in '${branch}'`);
+  }
 
   if (force) {
     if (currentVersion.includes('beta')) {