From 902bdb8029d94bbe0dfba0c1e5209f43eb708841 Mon Sep 17 00:00:00 2001 From: Ciro Lo Sapio Date: Mon, 8 Jul 2024 14:15:15 +0200 Subject: [PATCH 1/5] feat: support alpine platform detecting --- src/server/binary/binaryServerStarter.ts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/server/binary/binaryServerStarter.ts b/src/server/binary/binaryServerStarter.ts index 0971597d..f868aa51 100644 --- a/src/server/binary/binaryServerStarter.ts +++ b/src/server/binary/binaryServerStarter.ts @@ -206,13 +206,32 @@ function getBinaryEnvironment(): any { return process.env; } +/** + * Returns the platform of the current operating system. + * If the OS is Alpine Linux, it returns 'alpine'. + * Otherwise, it returns the platform string provided by the 'os' module. + * + * @returns The platform of the current operating system. + */ +function getPlatform (): ReturnType | 'alpine' { + if (fs.existsSync('/etc/os-release')) { + const osRelease = fs.readFileSync('/etc/os-release', 'utf8') + const lines = osRelease.split('\n') + for (const line of lines) { + const [key, value] = line.split('=') + if (key === 'ID') return value as 'alpine' + } + } + return os.platform() +} + /** * Returns the name of the server binary file for the current OS and architecture * * @return the name of the server binary file for the current OS and architecture */ function getServerBinaryNameWithoutExtension(): string { - switch (os.platform()) { + switch (getPlatform()) { case 'darwin': switch (os.arch()) { case 'arm64': @@ -221,7 +240,7 @@ function getServerBinaryNameWithoutExtension(): string { return 'lemminx-osx-x86_64'; } default: - return `lemminx-${os.platform}`; + return `lemminx-${getPlatform()}`; } } From 97dc6fca9ce511de700b7a45ff42b45e25ca7a71 Mon Sep 17 00:00:00 2001 From: Ciro Lo Sapio Date: Mon, 8 Jul 2024 14:18:42 +0200 Subject: [PATCH 2/5] fix compatibility --- src/server/binary/binaryServerStarter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/binary/binaryServerStarter.ts b/src/server/binary/binaryServerStarter.ts index f868aa51..c05042cb 100644 --- a/src/server/binary/binaryServerStarter.ts +++ b/src/server/binary/binaryServerStarter.ts @@ -219,7 +219,7 @@ function getPlatform (): ReturnType | 'alpine' { const lines = osRelease.split('\n') for (const line of lines) { const [key, value] = line.split('=') - if (key === 'ID') return value as 'alpine' + if (key === 'ID' && value === 'alpine') return value } } return os.platform() From d8e336f7fde78751a4c6ceda91ef449e046bef86 Mon Sep 17 00:00:00 2001 From: Ciro Lo Sapio Date: Thu, 18 Jul 2024 00:27:21 +0200 Subject: [PATCH 3/5] chore: Refactor getPlatform() function to check for the presence of '/etc/alpine-release' file instead of '/etc/os-release' --- src/server/binary/binaryServerStarter.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/server/binary/binaryServerStarter.ts b/src/server/binary/binaryServerStarter.ts index c05042cb..54549deb 100644 --- a/src/server/binary/binaryServerStarter.ts +++ b/src/server/binary/binaryServerStarter.ts @@ -214,14 +214,7 @@ function getBinaryEnvironment(): any { * @returns The platform of the current operating system. */ function getPlatform (): ReturnType | 'alpine' { - if (fs.existsSync('/etc/os-release')) { - const osRelease = fs.readFileSync('/etc/os-release', 'utf8') - const lines = osRelease.split('\n') - for (const line of lines) { - const [key, value] = line.split('=') - if (key === 'ID' && value === 'alpine') return value - } - } + if (fs.existsSync('/etc/alpine-release')) return 'alpine' return os.platform() } From 3bf70704ee846d9aea0737f2114e16b4e2cb9c02 Mon Sep 17 00:00:00 2001 From: Ciro Lo Sapio Date: Thu, 18 Jul 2024 00:30:49 +0200 Subject: [PATCH 4/5] chore: refactor --- src/server/binary/binaryServerStarter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/binary/binaryServerStarter.ts b/src/server/binary/binaryServerStarter.ts index 54549deb..fd7fd108 100644 --- a/src/server/binary/binaryServerStarter.ts +++ b/src/server/binary/binaryServerStarter.ts @@ -213,7 +213,7 @@ function getBinaryEnvironment(): any { * * @returns The platform of the current operating system. */ -function getPlatform (): ReturnType | 'alpine' { +function getPlatform (): NodeJS.Platform | 'alpine' { if (fs.existsSync('/etc/alpine-release')) return 'alpine' return os.platform() } From 81caab8ada6c38e4d60925a6a12979ec58fde454 Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Wed, 17 Jul 2024 23:02:14 -0400 Subject: [PATCH 5/5] Minor fix to conditional logic. - Also add Alpine Linux download URL from GH Signed-off-by: Roland Grunberg --- package.json | 1 + src/server/binary/binaryServerStarter.ts | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2a5318bb..b1cc6a76 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "binaryServerDownloadUrl": { "linux": "https://github.com/redhat-developer/vscode-xml/releases/download/latest/lemminx-linux.zip", + "alpine": "https://github.com/redhat-developer/vscode-xml/releases/download/latest/lemminx-alpine.zip", "osx-x86_64": "https://github.com/redhat-developer/vscode-xml/releases/download/latest/lemminx-osx-x86_64.zip", "osx-aarch_64": "https://github.com/redhat-developer/vscode-xml/releases/download/latest/lemminx-osx-aarch_64.zip", "win32": "https://github.com/redhat-developer/vscode-xml/releases/download/latest/lemminx-win32.zip" diff --git a/src/server/binary/binaryServerStarter.ts b/src/server/binary/binaryServerStarter.ts index fd7fd108..856c5f4c 100644 --- a/src/server/binary/binaryServerStarter.ts +++ b/src/server/binary/binaryServerStarter.ts @@ -214,8 +214,7 @@ function getBinaryEnvironment(): any { * @returns The platform of the current operating system. */ function getPlatform (): NodeJS.Platform | 'alpine' { - if (fs.existsSync('/etc/alpine-release')) return 'alpine' - return os.platform() + return fs.existsSync('/etc/alpine-release') ? 'alpine' : os.platform(); } /**