jaredly / jaredly/reason-language-server

Feature request: support esy within docker

Open
#264 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
OCaml
Stars
649
Forks
85
PR merge metrics
No merged PRs in 30d

Description

I have my `esy` environment setup in a docker container. I do not have it installed on the host machine. I use `docker-compose exec esy`. But I keep getting this error: "Couldn't get esy version".

The solution I found is to install `esy` on the host machine and build there and on the docker container. This isn't ideal, but it's working for now..

Unfortunately, this basically blocks all useful functionality.

debug log
```log
Hello - from /Users/donut/.vscode/extensions/jaredly.reason-vscode-1.5.2/bin.native
Previous log location: /var/folders/64/z8mfxtld7fgdcsqx385q8vwm0000gn/T/lsp.log
Sending notification {"jsonrpc": "2.0", "method": "client/registerCapability", "params": {"registrations": [{"id": "watching", "method": "workspace/didChangeWatchedFiles", "registerOptions": {"watchers": [{"globPattern": "**/bsconfig.json", "globPattern": "**/.merlin"}]}}]}}
Sending response {"id": 0, "jsonrpc": "2.0", "result": {"capabilities": {"textDocumentSync": 1, "hoverProvider": true, "completionProvider": {"resolveProvider": true, "triggerCharacters": ["."]}, "signatureHelpProvider": {"triggerCharacters": ["("]}, "definitionProvider": true, "typeDefinitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "codeActionProvider": true, "executeCommandProvider": {"commands": ["reason-language-server.add_to_interface_inner"]}, "codeLensProvider": {"resolveProvider": true}, "documentHighlightProvider": true, "documentRangeFormattingProvider": true, "documentFormattingProvider": true, "documentFormattingProvider": true, "renameProvider": true}}}
Read message
{"jsonrpc":"2.0","method":"initialized","params":{}}
Read message
{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"reason_language_server":{"location":"","build_system_override_by_root":{},"refmt":"","lispRefmt":"","format_width":"80","per_value_codelens":true,"dependencies_codelens":true,"opens_codelens":true,"show_module_path_on_hover":true,"reloadOnChange":false,"show_debug_errors":false,"autoRebuild":true}}}}
Read message
{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml","languageId":"ocaml","version":1,"text":"\nopen Lwt\nopen Cohttp\nopen Cohttp_lwt_unix\n\nlet freestar_adstxt_url = \n \"https://storage.googleapis.com/a.pub.network/core/ads.txt\"\n\nlet body () =\n Client.get (Uri.of_string freestar_adstxt_url) >>= fun (resp, body) ->\n let code = resp |> Response.status |> Code.code_of_status in\n Printf.printf \"Response code: %d\\n\" code;\n Printf.printf \"Headers: %s\\n\" (resp |> Response.headers |> Header.to_string);\n body |> Cohttp_lwt.Body.to_string >|= fun body ->\n Printf.printf \"Body of length: %d\\n\" (String.length body);\n body\n\nlet () =\n let body = Lwt_main.run body in\n print_endline (\"Received body\\n\" ^ body)\n"}}}
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending notification {"jsonrpc": "2.0", "method": "window/showMessage", "params": {"type": 1, "message": "Couldn't get esy version"}}
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Read message
{"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml"}}}
[server] Got a method textDocument/documentSymbol
[server] processing took 0.0109672546387ms
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending response {"id": 1, "jsonrpc": "2.0", "error": {"code": -32603, "message": "Couldn't get esy version"}}
Read message
{"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml"},"range":{"start":{"line":19,"character":22},"end":{"line":19,"character":22}},"context":{"diagnostics":[]}}}
[server] Got a method textDocument/codeAction
[server] processing took 0.0350475311279ms
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending response {"id": 2, "jsonrpc": "2.0", "error": {"code": -32603, "message": "Couldn't get esy version"}}
Read message
{"jsonrpc":"2.0","id":3,"method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml"}}}
[server] Got a method textDocument/codeLens
[server] processing took 0.0109672546387ms
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending response {"id": 3, "jsonrpc": "2.0", "result": [{"range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}, "command": {"title": "Unable to load compilation data: Couldn't get esy version", "command": ""}}]}
Read message
{"jsonrpc":"2.0","id":4,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml"},"range":{"start":{"line":11,"character":42},"end":{"line":11,"character":42}},"context":{"diagnostics":[]}}}
[server] Got a method textDocument/codeAction
[server] processing took 0.00596046447754ms
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending response {"id": 4, "jsonrpc": "2.0", "error": {"code": -32603, "message": "Couldn't get esy version"}}
Read message
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":2}}
Read message
{"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///Users/donut/RTM/rtm.dev/services/ads-txt/bin/main.ml"},"position":{"line":19,"character":35}}}
[server] Got a method textDocument/hover
[server] processing took 0.0100135803223ms
Found a `dune` file at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
]] Making a new jbuilder package at /Users/donut/RTM/rtm.dev/services/ads-txt/bin
=== Project root: /Users/donut/RTM/rtm.dev/services/ads-txt
Sending response {"id": 5, "jsonrpc": "2.0", "error": {"code": -32603, "message": "Couldn't get esy version"}}
Read message
{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}}
Read message
{"jsonrpc":"2.0","method":"$/setTraceNotification","params":{"value":"off"}}
Read message
{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"reason_language_server":{"location":"","build_system_override_by_root":{},"refmt":"","lispRefmt":"","format_width":"80","per_value_codelens":true,"dependencies_codelens":true,"opens_codelens":true,"show_module_path_on_hover":true,"reloadOnChange":false,"show_debug_errors":false,"autoRebuild":true}}}}
Read message
{"jsonrpc":"2.0","method":"$/setTraceNotification","params":{"value":"off"}}
Read message
{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"reason_language_server":{"location":"","build_system_override_by_root":{},"refmt":"","lispRefmt":"","format_width":"80","per_value_codelens":true,"dependencies_codelens":true,"opens_codelens":true,"show_module_path_on_hover":true,"reloadOnChange":false,"show_debug_errors":false,"autoRebuild":true}}}}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the failure with `docker-compose exec esy`, then trace the `bin.native` path and the `dune` project handling that reports "Couldn't get esy version." Done means the language server can obtain the esy version and provide its useful functionality when esy exists only inside the container.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, docker-compose, ocaml
Domain
devops, devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.