@franzmoca/opencode-lombok 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.
- package/README.md +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +32 -12
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/core.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export declare function detectLombokDependency(projectRoot: string): Promise<boo
|
|
|
3
3
|
export declare function opencodeDataDir(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, home?: string): string;
|
|
4
4
|
export declare function lombokJarPath(dataDir?: string): string;
|
|
5
5
|
export declare function isLspDownloadDisabled(env?: NodeJS.ProcessEnv): boolean;
|
|
6
|
-
export declare function ensureLombokJar(file: string, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
|
|
6
|
+
export declare function ensureLombokJar(file: string | URL, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
|
|
7
7
|
export declare function formatJavaAgentArg(file: string): string;
|
|
8
8
|
export declare function mergeJavaToolOptions(current: string | undefined, file: string): string;
|
package/dist/core.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "fs/promises";
|
|
2
2
|
import os from "os";
|
|
3
3
|
import path from "path";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
4
5
|
const LOMBOK_URL = "https://projectlombok.org/downloads/lombok.jar";
|
|
5
6
|
const BUILD_FILES = new Set(["pom.xml", "build.gradle", "build.gradle.kts"]);
|
|
6
7
|
const SKIP_DIRS = new Set([
|
|
@@ -19,6 +20,15 @@ const LOMBOK_MATCHERS = [
|
|
|
19
20
|
/io\.freefair\.lombok/,
|
|
20
21
|
];
|
|
21
22
|
const LOMBOK_JAVA_AGENT = /-javaagent:(?:"[^"]*lombok\.jar"|[^ "']*lombok\.jar)/i;
|
|
23
|
+
const isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
|
|
24
|
+
const resolveFilePath = (value) => {
|
|
25
|
+
if (typeof value === "string")
|
|
26
|
+
return value;
|
|
27
|
+
if (value instanceof URL && value.protocol === "file:") {
|
|
28
|
+
return fileURLToPath(value);
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
};
|
|
22
32
|
const pathExists = async (file) => fs
|
|
23
33
|
.stat(file)
|
|
24
34
|
.then(() => true)
|
|
@@ -59,30 +69,40 @@ export async function detectLombokDependency(projectRoot) {
|
|
|
59
69
|
return detectInDir(projectRoot);
|
|
60
70
|
}
|
|
61
71
|
export function opencodeDataDir(platform = process.platform, env = process.env, home = os.homedir()) {
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
const resolvedHome = isNonEmptyString(home) ? home : os.homedir();
|
|
73
|
+
const xdgDataHome = isNonEmptyString(env.XDG_DATA_HOME)
|
|
74
|
+
? env.XDG_DATA_HOME
|
|
75
|
+
: undefined;
|
|
76
|
+
if (xdgDataHome)
|
|
77
|
+
return path.join(xdgDataHome, "opencode");
|
|
64
78
|
if (platform === "darwin")
|
|
65
|
-
return path.join(
|
|
79
|
+
return path.join(resolvedHome, "Library", "Application Support", "opencode");
|
|
66
80
|
if (platform === "win32") {
|
|
67
|
-
const appData = env.APPDATA
|
|
81
|
+
const appData = isNonEmptyString(env.APPDATA)
|
|
82
|
+
? env.APPDATA
|
|
83
|
+
: path.win32.join(resolvedHome, "AppData", "Roaming");
|
|
68
84
|
return path.win32.join(appData, "opencode");
|
|
69
85
|
}
|
|
70
|
-
return path.join(
|
|
86
|
+
return path.join(resolvedHome, ".local", "share", "opencode");
|
|
71
87
|
}
|
|
72
88
|
export function lombokJarPath(dataDir = opencodeDataDir()) {
|
|
73
|
-
|
|
89
|
+
const resolvedDataDir = isNonEmptyString(dataDir) ? dataDir : opencodeDataDir();
|
|
90
|
+
return path.join(resolvedDataDir, "bin", "jdtls", "bin", "lombok.jar");
|
|
74
91
|
}
|
|
75
92
|
export function isLspDownloadDisabled(env = process.env) {
|
|
76
93
|
const value = env.OPENCODE_DISABLE_LSP_DOWNLOAD || "";
|
|
77
94
|
return /^(1|true|yes)$/i.test(value.trim());
|
|
78
95
|
}
|
|
79
96
|
export async function ensureLombokJar(file, env = process.env) {
|
|
80
|
-
const
|
|
97
|
+
const resolvedFile = resolveFilePath(file);
|
|
98
|
+
if (!resolvedFile)
|
|
99
|
+
return undefined;
|
|
100
|
+
const exists = await pathExists(resolvedFile);
|
|
81
101
|
if (exists)
|
|
82
|
-
return
|
|
102
|
+
return resolvedFile;
|
|
83
103
|
if (isLspDownloadDisabled(env))
|
|
84
104
|
return undefined;
|
|
85
|
-
await fs.mkdir(path.dirname(
|
|
105
|
+
await fs.mkdir(path.dirname(resolvedFile), { recursive: true });
|
|
86
106
|
const response = await fetch(LOMBOK_URL).catch(() => undefined);
|
|
87
107
|
if (!response?.ok)
|
|
88
108
|
return undefined;
|
|
@@ -90,15 +110,15 @@ export async function ensureLombokJar(file, env = process.env) {
|
|
|
90
110
|
if (!body)
|
|
91
111
|
return undefined;
|
|
92
112
|
const saved = await fs
|
|
93
|
-
.writeFile(
|
|
113
|
+
.writeFile(resolvedFile, Buffer.from(body))
|
|
94
114
|
.then(() => true)
|
|
95
115
|
.catch(() => false);
|
|
96
116
|
if (!saved)
|
|
97
117
|
return undefined;
|
|
98
|
-
const present = await pathExists(
|
|
118
|
+
const present = await pathExists(resolvedFile);
|
|
99
119
|
if (!present)
|
|
100
120
|
return undefined;
|
|
101
|
-
return
|
|
121
|
+
return resolvedFile;
|
|
102
122
|
}
|
|
103
123
|
export function formatJavaAgentArg(file) {
|
|
104
124
|
if (!/\s/.test(file))
|
package/package.json
CHANGED