tuyoo-devflow 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -10,16 +10,28 @@ function parseGitVersion(raw) {
|
|
|
10
10
|
const match = raw.match(/(\d+\.\d+\.\d+)/);
|
|
11
11
|
return match?.[1] ?? null;
|
|
12
12
|
}
|
|
13
|
+
function parseMajorFromToken(rawVersion) {
|
|
14
|
+
if (!rawVersion) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (rawVersion.startsWith("1.")) {
|
|
18
|
+
const parts = rawVersion.split(".");
|
|
19
|
+
const legacyMajor = Number(parts[1]);
|
|
20
|
+
return Number.isFinite(legacyMajor) ? legacyMajor : null;
|
|
21
|
+
}
|
|
22
|
+
const major = Number(rawVersion.split(/[._]/)[0]);
|
|
23
|
+
return Number.isFinite(major) ? major : null;
|
|
24
|
+
}
|
|
13
25
|
function parseJavaMajor(versionText) {
|
|
14
26
|
const quoted = versionText.match(/"([^"]+)"/)?.[1];
|
|
15
|
-
if (
|
|
16
|
-
return
|
|
27
|
+
if (quoted) {
|
|
28
|
+
return parseMajorFromToken(quoted);
|
|
17
29
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
30
|
+
const plain = versionText.match(/\b(?:openjdk|java)(?:\s+version)?\s+([0-9][0-9._]*)/i)?.[1];
|
|
31
|
+
if (plain) {
|
|
32
|
+
return parseMajorFromToken(plain);
|
|
21
33
|
}
|
|
22
|
-
return
|
|
34
|
+
return null;
|
|
23
35
|
}
|
|
24
36
|
export function parseJavaRuntimeInfo(raw) {
|
|
25
37
|
const normalized = raw.toLowerCase();
|
|
@@ -30,6 +42,24 @@ export function parseJavaRuntimeInfo(raw) {
|
|
|
30
42
|
isOpenJdk,
|
|
31
43
|
};
|
|
32
44
|
}
|
|
45
|
+
function commandOutput(result) {
|
|
46
|
+
return (result.stderr || result.stdout).trim();
|
|
47
|
+
}
|
|
48
|
+
async function probeMacBrewJavaIfNeeded(platform, directJavaResult) {
|
|
49
|
+
if (platform !== "macos" || directJavaResult.code === 0) {
|
|
50
|
+
return {};
|
|
51
|
+
}
|
|
52
|
+
const brewPrefixResult = await runCommand("brew --prefix openjdk@21", { allowFailure: true });
|
|
53
|
+
const brewPrefix = brewPrefixResult.stdout.trim();
|
|
54
|
+
if (brewPrefixResult.code !== 0 || !brewPrefix) {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
const fallbackResult = await runCommand(`"${brewPrefix}/bin/java" -version`, { allowFailure: true });
|
|
58
|
+
return {
|
|
59
|
+
brewPrefix,
|
|
60
|
+
fallbackResult,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
33
63
|
function condaInstallHint(platform) {
|
|
34
64
|
if (platform === "macos") {
|
|
35
65
|
return "可自动安装(brew 或 curl bash),或手动执行: brew install --cask miniconda";
|
|
@@ -57,6 +87,12 @@ function javaInstallHint(platform) {
|
|
|
57
87
|
}
|
|
58
88
|
return "可自动安装 OpenJDK,或手动执行: sudo dnf install -y java-21-openjdk java-21-openjdk-devel";
|
|
59
89
|
}
|
|
90
|
+
function macJavaPathHint(brewPrefix) {
|
|
91
|
+
const exportCmd = `export PATH="${brewPrefix}/bin:$PATH"`;
|
|
92
|
+
const linkCmd = `sudo ln -sfn "${brewPrefix}/libexec/openjdk.jdk" ` +
|
|
93
|
+
"/Library/Java/JavaVirtualMachines/openjdk-21.jdk";
|
|
94
|
+
return `检测到 Homebrew openjdk@21 已安装。请先执行 ${exportCmd},并建议执行 ${linkCmd}。`;
|
|
95
|
+
}
|
|
60
96
|
export async function checkRequiredTools(platform) {
|
|
61
97
|
const checks = [];
|
|
62
98
|
const gitResult = await runCommand("git --version", { allowFailure: true });
|
|
@@ -79,22 +115,46 @@ export async function checkRequiredTools(platform) {
|
|
|
79
115
|
});
|
|
80
116
|
}
|
|
81
117
|
const javaResult = await runCommand("java -version", { allowFailure: true });
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
118
|
+
const macBrewProbe = await probeMacBrewJavaIfNeeded(platform, javaResult);
|
|
119
|
+
const fallbackJavaOk = macBrewProbe.fallbackResult?.code === 0;
|
|
120
|
+
const hasJavaCommand = javaResult.code === 0;
|
|
121
|
+
const hasAnyJavaRuntime = hasJavaCommand || fallbackJavaOk;
|
|
122
|
+
const effectiveJavaOutput = hasJavaCommand
|
|
123
|
+
? commandOutput(javaResult)
|
|
124
|
+
: fallbackJavaOk && macBrewProbe.fallbackResult
|
|
125
|
+
? commandOutput(macBrewProbe.fallbackResult)
|
|
126
|
+
: commandOutput(javaResult);
|
|
127
|
+
if (!hasAnyJavaRuntime) {
|
|
128
|
+
if (macBrewProbe.brewPrefix) {
|
|
129
|
+
checks.push({
|
|
130
|
+
name: TOOL_CHECK_NAMES.java,
|
|
131
|
+
status: "fail",
|
|
132
|
+
detail: "检测到 Homebrew openjdk@21,但 java 命令当前不可用",
|
|
133
|
+
hint: macJavaPathHint(macBrewProbe.brewPrefix),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
checks.push({
|
|
138
|
+
name: TOOL_CHECK_NAMES.java,
|
|
139
|
+
status: "fail",
|
|
140
|
+
detail: "未检测到 Java",
|
|
141
|
+
hint: javaInstallHint(platform),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
89
144
|
}
|
|
90
145
|
else {
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const pass = Boolean(runtimeInfo.major &&
|
|
146
|
+
const runtimeInfo = parseJavaRuntimeInfo(effectiveJavaOutput);
|
|
147
|
+
const versionAndVendorPass = Boolean(runtimeInfo.major &&
|
|
94
148
|
runtimeInfo.major >= VERSION_POLICY.java.minMajor &&
|
|
95
149
|
runtimeInfo.isOpenJdk);
|
|
150
|
+
const pass = versionAndVendorPass;
|
|
96
151
|
let detail = "无法解析版本";
|
|
97
|
-
if (
|
|
152
|
+
if (!hasJavaCommand && fallbackJavaOk) {
|
|
153
|
+
detail = runtimeInfo.major
|
|
154
|
+
? `当前主版本 ${runtimeInfo.major}(OpenJDK,Homebrew openjdk@21)`
|
|
155
|
+
: "检测到 Homebrew OpenJDK,但无法解析版本";
|
|
156
|
+
}
|
|
157
|
+
else if (runtimeInfo.major) {
|
|
98
158
|
detail = runtimeInfo.isOpenJdk
|
|
99
159
|
? `当前主版本 ${runtimeInfo.major}(OpenJDK)`
|
|
100
160
|
: `当前主版本 ${runtimeInfo.major}(非 OpenJDK)`;
|
|
@@ -110,6 +170,9 @@ export async function checkRequiredTools(platform) {
|
|
|
110
170
|
else if (!runtimeInfo.isOpenJdk) {
|
|
111
171
|
hint = `检测到非 OpenJDK 发行版,请切换为 OpenJDK ${VERSION_POLICY.java.minMajor}+。${javaInstallHint(platform)}`;
|
|
112
172
|
}
|
|
173
|
+
else if (!hasJavaCommand && macBrewProbe.brewPrefix) {
|
|
174
|
+
hint = macJavaPathHint(macBrewProbe.brewPrefix);
|
|
175
|
+
}
|
|
113
176
|
else {
|
|
114
177
|
hint = javaInstallHint(platform);
|
|
115
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/precheck/tools.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/precheck/tools.ts"],"names":[],"mappings":"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"}
|