From a0ee572ce50cf022edae27d787d59f8b956492d7 Mon Sep 17 00:00:00 2001 From: Remy Suen Date: Sat, 14 Apr 2018 05:29:35 -0400 Subject: [PATCH] Fix #217 Fix COPY validation error with JSON folders If a COPY instruction is written in the JSON format but it is incorrectly using single quotes instead of double quotes, a warning should be generated. This warning can be toggled to become an error or alternatively ignored by modifying the configuration of the validator in the language server. Signed-off-by: Remy Suen --- CHANGELOG.md | 11 +++++++++-- README.md | 1 + package-lock.json | 48 +++++++++++------------------------------------ package.json | 4 ++-- src/server.ts | 8 ++++++-- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9d57f4..761c634 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,16 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +- settings + - docker.languageserver.diagnostics.instructionJSONInSingleQuotes? ([#217](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/217)) + - value = ( "ignore" | "warning" | "error" ) + ### Fixed -- clear diagnostics when server receives textDocument/didClose so that they do not linger in the client ([#214](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/214)) -- apply received changes in a textDocument/didChange in the order given in the JSON result instead of trying to sort them and apply them backwards ([#216](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/216)) +- textDocument/didChange + - apply received changes in a textDocument/didChange in the order given in the JSON result instead of trying to sort them and apply them backwards ([#216](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/216)) +- textDocument/publishDiagnostics + - clear diagnostics when server receives textDocument/didClose so that they do not linger in the client ([#214](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/214)) + - fix incorrect validation error if a COPY uses JSON arguments and its last string argument is correctly defined as a folder ([#217](https://github.com/rcjsuen/dockerfile-language-server-nodejs/issues/217)) ## [0.0.14] - 2018-03-08 ### Added diff --git a/README.md b/README.md index 70d4190..d371160 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ interface Settings { instructionCmdMultiple?: string, instructionEntrypointMultiple?: string instructionHealthcheckMultiple?: string + instructionJSONInSingleQuotes?: string } } } diff --git a/package-lock.json b/package-lock.json index c3adc18..aa5d7c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,54 +77,28 @@ } }, "dockerfile-language-service": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/dockerfile-language-service/-/dockerfile-language-service-0.0.2.tgz", - "integrity": "sha512-G5Cl+0JUxBzldLugRagTcEFUfFTvNqA0D8nGUmmHyvJbK/CeNMSCTiKnXsRs96/vMWuDBgN367LrBICxc1vGmA==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/dockerfile-language-service/-/dockerfile-language-service-0.0.3.tgz", + "integrity": "sha512-afIXeRVPi/nDbMwLl2532xRRD4Md7lYKR8FKwCGTKffyDg9b9bM77nUPjA/1ECQ1z00lts0wTro55yKaR11ZWg==", "requires": { "dockerfile-ast": "0.0.3", - "dockerfile-utils": "0.0.7", + "dockerfile-utils": "0.0.8", "vscode-languageserver-types": "3.6.0" - }, - "dependencies": { - "dockerfile-utils": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.0.7.tgz", - "integrity": "sha1-37dpwRfo+moNtQhQKW9MkYH9mIk=", - "requires": { - "dockerfile-ast": "0.0.2", - "vscode-languageserver-types": "3.5.0" - }, - "dependencies": { - "dockerfile-ast": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.2.tgz", - "integrity": "sha1-g0U5EiTvCN8eexWRbjRqygVLTKg=", - "requires": { - "vscode-languageserver-types": "3.5.0" - } - }, - "vscode-languageserver-types": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz", - "integrity": "sha1-5I15li8LjgLelV4/UkkI4rGcA3Q=" - } - } - } } }, "dockerfile-utils": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.0.6.tgz", - "integrity": "sha1-L/+YZaGvhqU6yAVSZrkXriClvLY=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.0.8.tgz", + "integrity": "sha512-EPKPIbMK638M6O3Gw9H+QOWiRBNC3apnyL7FsgJsHV1YpJXRFQz2TDW424S8gsqhvDwbtHdLURiH2mvymNAziQ==", "requires": { - "dockerfile-ast": "0.0.2", + "dockerfile-ast": "0.0.4", "vscode-languageserver-types": "3.5.0" }, "dependencies": { "dockerfile-ast": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.2.tgz", - "integrity": "sha1-g0U5EiTvCN8eexWRbjRqygVLTKg=", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.4.tgz", + "integrity": "sha512-eOmS/ygp2tGOiUrBW7XcHqYeUhHePjxCTpboS6tbXA3nE5be78QxdhzM9fSR7paKAIq2xaV5eSVsEixUNVk9bQ==", "requires": { "vscode-languageserver-types": "3.5.0" } diff --git a/package.json b/package.json index cbdd949..d6acae7 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ }, "dependencies": { "dockerfile-ast": "0.0.3", - "dockerfile-language-service": "0.0.2", - "dockerfile-utils": "0.0.6", + "dockerfile-language-service": "0.0.3", + "dockerfile-utils": "0.0.8", "vscode-languageserver": "^4.0.0" }, "devDependencies": { diff --git a/src/server.ts b/src/server.ts index fb2c423..35506ec 100644 --- a/src/server.ts +++ b/src/server.ts @@ -156,6 +156,7 @@ function validateTextDocument(textDocument: TextDocument): void { let instructionCmdMultiple = ValidationSeverity.WARNING; let instructionEntrypointMultiple = ValidationSeverity.WARNING; let instructionHealthcheckMultiple = ValidationSeverity.WARNING; + let instructionJSONInSingleQuotes = ValidationSeverity.WARNING; if (config) { maintainer = getSeverity(config.deprecatedMaintainer); directiveCasing = getSeverity(config.directiveCasing); @@ -164,6 +165,7 @@ function validateTextDocument(textDocument: TextDocument): void { instructionCmdMultiple = getSeverity(config.instructionCmdMultiple); instructionEntrypointMultiple = getSeverity(config.instructionEntrypointMultiple); instructionHealthcheckMultiple = getSeverity(config.instructionHealthcheckMultiple); + instructionJSONInSingleQuotes = getSeverity(config.instructionHealthcheckMultiple); } const fileSettings = { deprecatedMaintainer: maintainer, @@ -172,7 +174,8 @@ function validateTextDocument(textDocument: TextDocument): void { instructionCasing: instructionCasing, instructionCmdMultiple: instructionCmdMultiple, instructionEntrypointMultiple: instructionEntrypointMultiple, - instructionHealthcheckMultiple: instructionHealthcheckMultiple + instructionHealthcheckMultiple: instructionHealthcheckMultiple, + instructionJSONInSingleQuotes: instructionJSONInSingleQuotes }; const diagnostics = service.validate(textDocument.getText(), fileSettings); connection.sendDiagnostics({ uri: textDocument.uri, diagnostics }); @@ -190,7 +193,8 @@ interface ValidatorConfiguration { instructionCasing?: string, instructionCmdMultiple?: string, instructionEntrypointMultiple?: string, - instructionHealthcheckMultiple?: string + instructionHealthcheckMultiple?: string, + instructionJSONInSingleQuotes?: string } interface Settings {