ktr0731 / evans

Evans: more expressive universal gRPC client
MIT License
4.23k stars 187 forks source link

Feature request: add support for unix domain socket #654

Open AurelienRichez opened 1 year ago

AurelienRichez commented 1 year ago

Feature request: add support for unix domain socket

Just discovered the project. This looks really nice.

go grpc implementation supports unix sockets. I wanted to know if you would consider adding support in evans as well.

From what I see it is already almost working if we set as an address unix:///path/to/socket. evans already tries to connect via the unix socket protocol but the only issue seems to be that evans concatenate the port no matter what https://github.com/ktr0731/evans/blob/87fb3ddbbfdebb779e2dbe18050c098b46b9e887/mode/common.go#L16

As a consequence the file name is wrong and evans cannot connect (I guess that it could work if the socket was awkwardly named like socket:123 😅)

I could get it to work by not adding the :<port> part if the address starts with unix://, so the fix looks simple (but there are other things to do for completeness, probably to add tests and change the prompt in the repl).

I can try to work on it and open a PR if you are interested (I'm not very familiar with go and the project itself, so if someone else is faster than me even better).

yuzhichang commented 1 year ago

+1 for debuging k8s CRI which's address is unix:///var/run/crio/crio.sock

flokli commented 11 months ago

I did quickly create a patch for it and sent it over at https://github.com/ktr0731/evans/pull/680, but I'd assume in the long term, we might want to deprecate host and port cmdline args in favor of a single address arg.

It's obviously up to the maintainer on how this should go in, so let's see how it goes :crossed_fingers: