func GetMethodDescFromProtoSet(call, protoset string) (*desc.MethodDescriptor, error) {
	b, err := ioutil.ReadFile(protoset)
	if err != nil {
		return nil, fmt.Errorf("could not load protoset file %q: %v", protoset, err)
	}
	res, err := GetMethodDescFromProtoSetBinary(call, b)
	if err != nil && strings.Contains(err.Error(), "could not parse contents of protoset binary") {
		return nil, fmt.Errorf("could not parse contents of protoset file %q: %v", protoset, err)
	}
	return res, err
}
GetMethodDescFromProtoSet gets method descriptor for the given call symbol from protoset file given my path protoset
package protodesc
import (
	"errors"
	"fmt"
	"io/ioutil"
	"path/filepath"
	"strings"
	"github.com/golang/protobuf/proto"
	"github.com/golang/protobuf/protoc-gen-go/descriptor"
	"github.com/jhump/protoreflect/desc"
	"github.com/jhump/protoreflect/desc/protoparse"
	"github.com/jhump/protoreflect/grpcreflect"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)
var errNoMethodNameSpecified = errors.New("no method name specified")
func GetMethodDescFromProto(call, proto string, imports []string) (*desc.MethodDescriptor, error) {
	p := &protoparse.Parser{ImportPaths: imports}
	filename := proto
	if filepath.IsAbs(filename) {
		filename = filepath.Base(proto)
	}
	fds, err := p.ParseFiles(filename)
	if err != nil {
		return nil, err
	}
	fileDesc := fds[0]
	files := map[string]*desc.FileDescriptor{}
	files[fileDesc.GetName()] = fileDesc
	return getMethodDesc(call, files)
}