jaredly / jaredly/reason-language-server
Feature request: support esy within docker
- 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