Skip to content

Commit d411668

Browse files
committed
refactor: use "which" package to find binary in a cross-platform way
Signed-off-by: Jack Cherng <jfcherng@gmail.com>
1 parent a5b8dd9 commit d411668

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

server/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"urijs": "^1.19.11",
2727
"vscode-languageserver": "^6.1.1",
2828
"vscode-languageserver-textdocument": "^1.0.1",
29-
"web-tree-sitter": "^0.20.5"
29+
"web-tree-sitter": "^0.20.5",
30+
"which": "^2.0.2"
3031
},
3132
"scripts": {
3233
"prepublishOnly": "cd ../ && yarn run compile"
@@ -36,6 +37,7 @@
3637
"@types/glob": "8.0.0",
3738
"@types/request-promise-native": "1.0.18",
3839
"@types/turndown": "5.0.1",
39-
"@types/urijs": "1.19.19"
40+
"@types/urijs": "1.19.19",
41+
"@types/which": "2.0.1"
4042
}
4143
}

server/src/linter.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { spawn } from 'child_process'
22
import * as LSP from 'vscode-languageserver'
3+
import which = require('which')
34

45
import * as config from './config'
5-
import { execShellScript } from './util/sh'
66

77
function formatMessage(comment: ShellcheckComment): string {
88
return (comment.code ? `SC${comment.code}: ` : '') + comment.message
@@ -14,18 +14,7 @@ type LinterOptions = {
1414
}
1515

1616
export async function getLinterExecutablePath(): Promise<string | null> {
17-
const pathFromConfig = config.getShellcheckPath()
18-
19-
if (pathFromConfig) {
20-
return pathFromConfig
21-
}
22-
23-
try {
24-
const path = (await execShellScript('which shellcheck')).trim()
25-
return path === '' ? null : path
26-
} catch (e) {
27-
return null
28-
}
17+
return config.getShellcheckPath() || (await which('shellcheck'))
2918
}
3019

3120
export class Linter {

server/yarn.lock

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@
6262
resolved "https://registry.yarnpkg.com/@types/urijs/-/urijs-1.19.19.tgz#2789369799907fc11e2bc6e3a00f6478c2281b95"
6363
integrity sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==
6464

65+
"@types/which@2.0.1":
66+
version "2.0.1"
67+
resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.1.tgz#27ecd67f915b7c3d6ba552135bb1eecd66e63501"
68+
integrity sha512-Jjakcv8Roqtio6w1gr0D7y6twbhx6gGgFGF5BLwajPpnOIOxFkakFhCq+LmyyeAz7BX6ULrjBOxdKaCDy+4+dQ==
69+
6570
ajv@^5.1.0:
6671
version "5.5.2"
6772
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
@@ -286,6 +291,11 @@ is-typedarray@~1.0.0:
286291
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
287292
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
288293

294+
isexe@^2.0.0:
295+
version "2.0.0"
296+
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
297+
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
298+
289299
isstream@~0.1.2:
290300
version "0.1.2"
291301
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -543,6 +553,13 @@ web-tree-sitter@^0.20.5:
543553
resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.20.5.tgz#62c8ea29d94f6ef6f03ce9c68c860df011ee26c7"
544554
integrity sha512-mpXlqIeEBE5Q71cnBnt8w6XKhIiKmllPECqsIFBtMvzcfCxA8+614iyMJXBCQo95Vs3y1zORLqiLJn25pYZ4Tw==
545555

556+
which@^2.0.2:
557+
version "2.0.2"
558+
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
559+
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
560+
dependencies:
561+
isexe "^2.0.0"
562+
546563
wrappy@1:
547564
version "1.0.2"
548565
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"

0 commit comments

Comments
 (0)