From 44ee663d061b18dd12e9249bbfee60c136d747f3 Mon Sep 17 00:00:00 2001 From: Noah Santschi-Cooney Date: Fri, 15 Jun 2018 18:40:01 +0100 Subject: [PATCH] Shows error if glslangValidator not found. Also made script to download it --- .gitignore | 3 ++- server/package.json | 8 ++++---- server/src/linter.ts | 3 ++- server/src/server.ts | 7 ++++++- setup.py | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index 6e715c3..49ba969 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules out *.out -*.txt \ No newline at end of file +*.txt +glslangValidator \ No newline at end of file diff --git a/server/package.json b/server/package.json index 956e21d..86af45f 100644 --- a/server/package.json +++ b/server/package.json @@ -4,10 +4,10 @@ "version": "0.0.1", "author": "Noah Santschi-Cooney (Strum355)", "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/Strum355/vscode-mc-shader" - }, + "repository": { + "type": "git", + "url": "https://github.com/Strum355/vscode-mc-shader" + }, "engines": { "node": "*" }, diff --git a/server/src/linter.ts b/server/src/linter.ts index 62f7627..bd2282f 100644 --- a/server/src/linter.ts +++ b/server/src/linter.ts @@ -68,7 +68,7 @@ export function preprocess(document: TextDocument) { } if (i === lines.length - 1) lines.splice(0, 0, include) } - console.log(lines.join('\n')) + //console.log(lines.join('\n')) //const root = document.uri.replace(/^file:\/\//, '').replace(conf.minecraftPath, '').replace(path.basename(document.uri), '') lint(lines.join('\n'), document.uri) @@ -76,6 +76,7 @@ export function preprocess(document: TextDocument) { function lint(text: string, uri: string) { const child = exec(`${conf.glslangPath} --stdin -S frag`, (error, out, err) => { + if (error) return const diagnostics: Diagnostic[] = [] const matches = filterMatches(out) as RegExpMatchArray[] matches.forEach((match) => { diff --git a/server/src/server.ts b/server/src/server.ts index fc2586f..bbb7e20 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -2,11 +2,11 @@ import * as vsclang from 'vscode-languageserver' import { Config } from './config' import { completions } from './completionProvider'; import { preprocess } from './linter'; +import { stat } from 'fs'; export const connection = vsclang.createConnection(new vsclang.IPCMessageReader(process), new vsclang.IPCMessageWriter(process)); export const documents = new vsclang.TextDocuments(); - documents.listen(connection); export let conf = new Config('', '') @@ -37,6 +37,11 @@ documents.onDidSave((event) => { connection.onDidChangeConfiguration((change) => { const temp = change.settings.mcglsl as Config conf = new Config(temp.minecraftPath, temp.glslangPath) + stat(conf.glslangPath, (error) => { + if (error) { + connection.window.showErrorMessage('glslangValidator not found') + } + }) documents.all().forEach(preprocess); }); diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..6701fda --- /dev/null +++ b/setup.py @@ -0,0 +1,33 @@ +import urllib.request +import zipfile +from io import BytesIO +import shutil +import os as o + +os = { + 0: 'win', + 1: 'linux', + 2: 'osx' +} + +url = { + 0: 'https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-windows-x64-Release.zip', + 1: 'https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip', + 2: 'https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-osx-Release.zip' +} + +def main(): + os_choice = int(input('Choose your OS:\n - 0: Windows\n - 1: Linux\n - 2: OSX\n> ')) + if os_choice not in os: + print('Invalid OS. Please only choose a value between 0 and 2') + + with urllib.request.urlopen(url[os_choice]) as respone: + with BytesIO(respone.read()) as zipped: + with zipfile.ZipFile(zipped) as zip_file: + zip_file.extract('bin/glslangValidator') + o.rename('bin/glslangValidator', 'glslangValidator') + o.rmdir('bin') + print('glslangValidator downloaded. Set mclglsl') + return + print('There was an error :(') +main() \ No newline at end of file