diff --git a/CHANGELOG.md b/CHANGELOG.md index 0321dd2..49d8356 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# v0.1.4 + +- `chmod +x` before try starting server. + # v0.1.3 - Remove some unused code. diff --git a/SvelteNova.novaextension/extension.json b/SvelteNova.novaextension/extension.json index 2f8ac1c..1704039 100644 --- a/SvelteNova.novaextension/extension.json +++ b/SvelteNova.novaextension/extension.json @@ -3,7 +3,7 @@ "name": "Svelte", "organization": "Shibo Lyu", "description": "LSP support for Svelte.", - "version": "0.1.3", + "version": "0.1.4", "categories": ["languages"], "license": "MIT", "bugs": "https://github.com/laosb/SvelteNova/issues", diff --git a/SvelteNova.novaextension/npm-shrinkwrap.json b/SvelteNova.novaextension/npm-shrinkwrap.json index dbd0e53..c39b95b 100644 --- a/SvelteNova.novaextension/npm-shrinkwrap.json +++ b/SvelteNova.novaextension/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "sveltenova.novaextension", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sveltenova.novaextension", - "version": "0.1.3", + "version": "0.1.4", "dependencies": { "svelte-language-server": "^0.10.147" } diff --git a/SvelteNova.novaextension/package.json b/SvelteNova.novaextension/package.json index 8e1550d..f558789 100644 --- a/SvelteNova.novaextension/package.json +++ b/SvelteNova.novaextension/package.json @@ -1,6 +1,6 @@ { "name": "sveltenova.novaextension", - "version": "0.1.3", + "version": "0.1.4", "dependencies": { "svelte-language-server": "^0.10.147" } diff --git a/package.json b/package.json index 4a7030b..af380c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svelte-nova", - "version": "0.1.3", + "version": "0.1.4", "main": "SvelteNova.novaextension/main.js", "repository": "https://github.com/laosb/SvelteNova", "author": "laosb ", diff --git a/src/main.ts b/src/main.ts index 4543866..968814b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ import { dependencyManagement } from 'nova-extension-utils' +import { makeFileExecutable } from './utils' var langServer: SvelteLanguageServer | null = null @@ -46,7 +47,7 @@ class SvelteLanguageServer { this.stop() } - start(path: string) { + async start(path: string) { if (this.languageClient) { this.languageClient.stop() nova.subscriptions.remove(this.languageClient) @@ -63,13 +64,17 @@ class SvelteLanguageServer { console.log('using server at', path) } + let runShPath = nova.path.join(nova.extension.path, 'run.sh') + + await makeFileExecutable(runShPath) + // Create the client var client = new DisposableLanguageClient( 'svelte-langserver', 'Svelte Language Server', { type: 'stdio', - path: nova.path.join(nova.extension.path, 'run.sh'), + path: runShPath, env: { SVELTE_SERVER: path, WORKDIR: nova.workspace.path || '.', diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..6a935a3 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,16 @@ +// https://github.com/apexskier/nova-json-language-server/blob/a64f704bee06071ad6fd82062a3656669d62b0a8/src/main.ts#L18-L32 +export async function makeFileExecutable(file: string) { + return new Promise((resolve, reject) => { + const process = new Process('/usr/bin/env', { + args: ['chmod', 'u+x', file], + }) + process.onDidExit((status) => { + if (status === 0) { + resolve() + } else { + reject(status) + } + }) + process.start() + }) +}