Command svcdec stands for 'service decorator'. It reads a service interface XYZServer generated by protoc and generates DecoratedXYZ with this structure:

    type DecoratedXYZ struct {
      Service XYZServer
      Prelude func(ctx context.Context, methodName string, req proto.Message) (context.Context, error)

    DecoratedXYZ has the same methods as XYZServer: they call Prelude before forwarding the call to the corresponding XYZServer method.

    svcdec is designed to be run through go generate:

    //go:generate svcdec -type GreetServer