diff --git a/.gitignore b/.gitignore index 4e05b95..84d2869 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.log *.pem .env +.lsp-repl-history .terraform build node_modules diff --git a/Makefile b/Makefile index 14ef5f7..c40abd3 100644 --- a/Makefile +++ b/Makefile @@ -165,6 +165,10 @@ sandbox: @: $${L} L=$(L) node backend/sandbox.js +lsp: + @: $${C} + node backend/lsp-repl.js $(C) + ### Fetch artifacts from registries pull-base: diff --git a/backend/lsp-repl.js b/backend/lsp-repl.js index c3e5aed..b136110 100644 --- a/backend/lsp-repl.js +++ b/backend/lsp-repl.js @@ -5,7 +5,7 @@ import readline from "historic-readline"; import { quote } from "shell-quote"; import rpc from "vscode-jsonrpc"; -import { langs } from "./langs"; +import { langsPromise } from "./langs.js"; const args = process.argv.slice(2); @@ -23,6 +23,8 @@ if (["-h", "-help", "--help", "help"].includes(args[0])) { process.exit(0); } +const langs = await langsPromise; + let cmdline; if (args.length === 1 && langs[args[0]] && langs[args[0]].lsp) { cmdline = ["bash", "-c", langs[args[0]].lsp.start]; diff --git a/package.json b/package.json index df5f724..0bbd4c6 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "express": "^4.17.1", "express-ws": "^4.0.0", "file-loader": "^6.2.0", + "historic-readline": "^1.0.8", "lodash": "^4.17.20", "monaco-editor": "0.20.0", "monaco-editor-webpack-plugin": "1.9.0", diff --git a/yarn.lock b/yarn.lock index defb8f4..4efa403 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2203,6 +2203,16 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-extra@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" + integrity sha1-1OQ0KpZnXLeEZjOmCZJJMytTmVI= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -2299,7 +2309,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -2369,6 +2379,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +historic-readline@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/historic-readline/-/historic-readline-1.0.8.tgz#6f36e770769275113a57ae1a6007001af771cff6" + integrity sha1-bzbncHaSdRE6V64aYAcAGvdxz/Y= + dependencies: + fs-extra "^0.24.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2696,6 +2713,13 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -3655,7 +3679,7 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.5.4, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==