Package plugins contains shared plugin-side functionality.
func Run(ctx context.Context, stdin io.ReadCloser, run RunLoop) error
Run connects to the host and calls `run`.
Blocks until the stdin closes (which indicates the plugin should terminate).
type RunLoop func(context.Context, *grpc.ClientConn) error
RunLoop executes some concrete plugin logic.
It should run some kind of a loop until the context is canceled. It happens
when the host decides to terminate the plugin.
Any logging done on this context goes to the host.