tuyoo-devflow 0.1.0 → 0.1.1
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,29 +115,55 @@ 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 effectiveJavaOutput = hasJavaCommand
|
|
122
|
+
? commandOutput(javaResult)
|
|
123
|
+
: fallbackJavaOk && macBrewProbe.fallbackResult
|
|
124
|
+
? commandOutput(macBrewProbe.fallbackResult)
|
|
125
|
+
: commandOutput(javaResult);
|
|
126
|
+
if (!hasJavaCommand && !fallbackJavaOk) {
|
|
127
|
+
if (macBrewProbe.brewPrefix) {
|
|
128
|
+
checks.push({
|
|
129
|
+
name: TOOL_CHECK_NAMES.java,
|
|
130
|
+
status: "fail",
|
|
131
|
+
detail: "检测到 Homebrew openjdk@21,但 java 命令当前不可用",
|
|
132
|
+
hint: macJavaPathHint(macBrewProbe.brewPrefix),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
checks.push({
|
|
137
|
+
name: TOOL_CHECK_NAMES.java,
|
|
138
|
+
status: "fail",
|
|
139
|
+
detail: "未检测到 Java",
|
|
140
|
+
hint: javaInstallHint(platform),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
89
143
|
}
|
|
90
144
|
else {
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const pass = Boolean(runtimeInfo.major &&
|
|
145
|
+
const runtimeInfo = parseJavaRuntimeInfo(effectiveJavaOutput);
|
|
146
|
+
const versionAndVendorPass = Boolean(runtimeInfo.major &&
|
|
94
147
|
runtimeInfo.major >= VERSION_POLICY.java.minMajor &&
|
|
95
148
|
runtimeInfo.isOpenJdk);
|
|
149
|
+
const pass = hasJavaCommand && versionAndVendorPass;
|
|
96
150
|
let detail = "无法解析版本";
|
|
97
|
-
if (
|
|
151
|
+
if (!hasJavaCommand && fallbackJavaOk) {
|
|
152
|
+
detail = runtimeInfo.major
|
|
153
|
+
? `检测到 Homebrew OpenJDK ${runtimeInfo.major},但 java 命令当前不可用`
|
|
154
|
+
: "检测到 Homebrew OpenJDK,但无法解析版本,且 java 命令当前不可用";
|
|
155
|
+
}
|
|
156
|
+
else if (runtimeInfo.major) {
|
|
98
157
|
detail = runtimeInfo.isOpenJdk
|
|
99
158
|
? `当前主版本 ${runtimeInfo.major}(OpenJDK)`
|
|
100
159
|
: `当前主版本 ${runtimeInfo.major}(非 OpenJDK)`;
|
|
101
160
|
}
|
|
102
161
|
let hint;
|
|
103
162
|
if (!pass) {
|
|
104
|
-
if (!
|
|
163
|
+
if (!hasJavaCommand && macBrewProbe.brewPrefix) {
|
|
164
|
+
hint = macJavaPathHint(macBrewProbe.brewPrefix);
|
|
165
|
+
}
|
|
166
|
+
else if (!runtimeInfo.major) {
|
|
105
167
|
hint = `无法识别 Java 版本信息,请安装 OpenJDK ${VERSION_POLICY.java.minMajor}+。${javaInstallHint(platform)}`;
|
|
106
168
|
}
|
|
107
169
|
else if (runtimeInfo.major < VERSION_POLICY.java.minMajor) {
|
|
@@ -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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"}
|