Skip to content

Commit 153408e

Browse files
authored
Merge pull request #176 from LarchLiu:main
fix: kv namespaces name
2 parents 4db2301 + feed86d commit 153408e

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

scripts/setup-kv.js

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ const { execSync } = require('child_process');
44
const fs = require('fs');
55
const path = require('path');
66

7-
const KV_NAMESPACE_NAME = 'sublink-worker-SUBLINK_KV';
7+
const KV_NAMESPACE = 'SUBLINK_KV';
8+
const WORKER_NAME = 'sublink-worker'
9+
const KV_NAMESPACE_NAME = `${WORKER_NAME}-${KV_NAMESPACE}`;
10+
const LEGACY_KV_NAMESPACE_NAME = `${WORKER_NAME}-${WORKER_NAME}-${KV_NAMESPACE}`; // 历史遗留的命名空间名称
811
const WRANGLER_CONFIG_PATH = path.join(__dirname, '..', 'wrangler.toml');
912

1013
// 执行wrangler命令并返回结果
@@ -20,28 +23,56 @@ function runWranglerCommand(command) {
2023

2124
// 检查KV namespace是否存在
2225
function checkKvNamespaceExists() {
23-
console.log(`正在检查KV namespace "${KV_NAMESPACE_NAME}"是否存在...`);
26+
console.log(`正在检查KV namespace "${KV_NAMESPACE_NAME}"和"${LEGACY_KV_NAMESPACE_NAME}"是否存在...`);
2427
const output = runWranglerCommand('kv namespace list');
2528

2629
try {
2730
// 尝试从输出中提取JSON部分(如果有)
2831
const jsonMatch = output.match(/\[[\s\S]*\]/);
2932
if (jsonMatch) {
3033
const namespaces = JSON.parse(jsonMatch[0]);
31-
return namespaces.find(ns => ns.title === KV_NAMESPACE_NAME);
34+
// 优先检查当前命名格式的命名空间
35+
const primaryNamespace = namespaces.find(ns => ns.title === KV_NAMESPACE_NAME);
36+
if (primaryNamespace) {
37+
console.log(`找到命名空间: ${KV_NAMESPACE_NAME}`);
38+
return primaryNamespace;
39+
}
40+
41+
// 如果当前格式不存在,检查遗留命名格式
42+
const legacyNamespace = namespaces.find(ns => ns.title === LEGACY_KV_NAMESPACE_NAME);
43+
if (legacyNamespace) {
44+
console.log(`找到遗留命名空间: ${LEGACY_KV_NAMESPACE_NAME}`);
45+
return legacyNamespace;
46+
}
47+
48+
return null;
3249
}
3350

3451
// 如果没有匹配到JSON格式,就使用正则表达式查找namespace
35-
const namespaceRegex = new RegExp(`"${KV_NAMESPACE_NAME}"\\s*([a-zA-Z0-9-]+)`);
36-
const match = output.match(namespaceRegex);
52+
// 首先尝试当前命名格式
53+
let namespaceRegex = new RegExp(`"${KV_NAMESPACE_NAME}"\\s*([a-zA-Z0-9-]+)`);
54+
let match = output.match(namespaceRegex);
3755

3856
if (match) {
57+
console.log(`找到命名空间: ${KV_NAMESPACE_NAME}`);
3958
return {
4059
title: KV_NAMESPACE_NAME,
4160
id: match[1]
4261
};
4362
}
4463

64+
// 然后尝试遗留命名格式
65+
namespaceRegex = new RegExp(`"${LEGACY_KV_NAMESPACE_NAME}"\\s*([a-zA-Z0-9-]+)`);
66+
match = output.match(namespaceRegex);
67+
68+
if (match) {
69+
console.log(`找到遗留命名空间: ${LEGACY_KV_NAMESPACE_NAME}`);
70+
return {
71+
title: LEGACY_KV_NAMESPACE_NAME,
72+
id: match[1]
73+
};
74+
}
75+
4576
return null;
4677
} catch (error) {
4778
console.error('解析KV namespace列表失败:', error.message);
@@ -53,7 +84,7 @@ function checkKvNamespaceExists() {
5384
// 创建KV namespace
5485
function createKvNamespace() {
5586
console.log(`创建KV namespace "${KV_NAMESPACE_NAME}"...`);
56-
const output = runWranglerCommand(`kv namespace create "${KV_NAMESPACE_NAME}"`);
87+
const output = runWranglerCommand(`kv namespace create "${KV_NAMESPACE}"`);
5788

5889
try {
5990
// 尝试从输出中提取ID
@@ -120,4 +151,4 @@ function main() {
120151
console.log('设置完成!');
121152
}
122153

123-
main();
154+
main();

0 commit comments

Comments
 (0)