From 7d5147c180bd60da9719d3a26af01ac5e2968aff Mon Sep 17 00:00:00 2001 From: Orion Date: Sat, 6 Jun 2026 16:00:39 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(core):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20rename.js=20=E4=B8=AD=E7=9A=84=E5=9C=B0?= =?UTF-8?q?=E5=8C=BA=E5=BA=8F=E5=88=97=E7=B4=A7=E5=87=91=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homebrew/brew-upgrade-manager.sh | 2 +- substore/rename.js | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/homebrew/brew-upgrade-manager.sh b/homebrew/brew-upgrade-manager.sh index cd36204..099409d 100644 --- a/homebrew/brew-upgrade-manager.sh +++ b/homebrew/brew-upgrade-manager.sh @@ -102,7 +102,7 @@ echo -e "\n${CYAN}>>> [2/2] Upgrading GUI Casks (brew upgrade --cask --greedy -- # 强制注入环境变量,确保终端输出依然保留 ANSI 颜色格式 export HOMEBREW_COLOR=1 - +@ # --- 终端宽度处理 --- # 固定宽度,避免动态识别终端列数导致 prompt 重绘异常。 export COLUMNS diff --git a/substore/rename.js b/substore/rename.js index 028757b..41d1599 100644 --- a/substore/rename.js +++ b/substore/rename.js @@ -800,6 +800,37 @@ async function operator(proxies) { ); }; + const compactRegionSequences = () => { + const indexesByRegion = Object.create(null); + + sequenceInfos.forEach((sequenceInfo, proxyIndex) => { + if (!sequenceInfo) return; + + const groupKey = `${subNames[proxyIndex]}\u0000${sequenceInfo.prefix}|${sequenceInfo.regionCode}`; + const regionIndexes = indexesByRegion[groupKey] || ( + indexesByRegion[groupKey] = [] + ); + regionIndexes.push(proxyIndex); + }); + + Object.keys(indexesByRegion).forEach(groupKey => { + const regionIndexes = indexesByRegion[groupKey]; + regionIndexes.forEach((proxyIndex, sequenceIndex) => { + const sequenceInfo = sequenceInfos[proxyIndex]; + const compactSequenceNumber = (sequenceIndex + 1) + .toString() + .padStart(2, '0'); + const compactSequenceInfo = { + ...sequenceInfo, + sequenceNumber: compactSequenceNumber + }; + + sequenceInfos[proxyIndex] = compactSequenceInfo; + normalizedCoreNames[proxyIndex] = withRegionSequence(compactSequenceInfo, compactSequenceNumber); + }); + }); + }; + const normalizeBilingualName = name => { const bilingualMatch = name.match(/^(.+?)\s*|\s*(.+)$/); if (!bilingualMatch) return name; @@ -891,6 +922,8 @@ async function operator(proxies) { sequenceInfos[proxyIndex] = sequenceInfo; }); + compactRegionSequences(); + normalizedCoreNames.forEach((normalizedCoreName, proxyIndex) => { const subName = subNames[proxyIndex]; const sequenceInfo = sequenceInfos[proxyIndex];