tui.js:修 /manage mmReadCatalog Python 单行语法错误(if row: import sys 非法)→ 提前 import sys
This commit is contained in:
@@ -426,26 +426,38 @@ function mmReadCatalog() {
|
||||
return new Promise((resolve) => {
|
||||
try {
|
||||
const py = process.platform === "win32" ? "python" : "python3"
|
||||
// 注意:Python `-c` 单行脚本里 `if row: import sys;` 是非法语法(import 不能跟在 if 同行)
|
||||
// 提前 import sys,用 `sys.stdout.write(row[0]) if row else None` 替代 if 行
|
||||
const script =
|
||||
"import sqlite3,os;" +
|
||||
"import sqlite3,os,sys;" +
|
||||
"db=os.path.join(os.path.expanduser('~'),'.local','share','opencode','opencode.db');" +
|
||||
"con=sqlite3.connect(db);" +
|
||||
"row=con.execute(\"SELECT value FROM kv WHERE key='models-dev:catalog'\").fetchone();" +
|
||||
"con.close();" +
|
||||
"if row: import sys; sys.stdout.write(row[0])"
|
||||
"sys.stdout.write(row[0]) if row else None"
|
||||
const r = spawn(py, ["-c", script], { stdio: ["ignore", "pipe", "pipe"] })
|
||||
let out = ""
|
||||
let err = ""
|
||||
r.stdout.on("data", (d) => (out += d))
|
||||
r.stderr.on("data", (d) => (err += d))
|
||||
r.on("close", () => {
|
||||
try {
|
||||
if (out.trim()) resolve(JSON.parse(out.trim()))
|
||||
else resolve(null)
|
||||
else {
|
||||
log("[oc-session-all] mmReadCatalog 空结果 err:" + err.slice(0, 200))
|
||||
resolve(null)
|
||||
}
|
||||
} catch (e) {
|
||||
log("[oc-session-all] mmReadCatalog parse 失败: " + e.message + " err:" + err.slice(0, 120))
|
||||
resolve(null)
|
||||
}
|
||||
})
|
||||
r.on("error", () => resolve(null))
|
||||
r.on("error", (e) => {
|
||||
log("[oc-session-all] mmReadCatalog spawn error: " + e.message)
|
||||
resolve(null)
|
||||
})
|
||||
} catch (e) {
|
||||
log("[oc-session-all] mmReadCatalog 异常: " + e.message)
|
||||
resolve(null)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user