github.com/mloves0824/enron/cmd/enron@v0.0.0-20230830012320-113bbf6be3c8/internal/proto/add/template.go (about)

     1  package add
     2  
     3  import (
     4  	"bytes"
     5  	"strings"
     6  	"text/template"
     7  )
     8  
     9  const protoTemplate = `
    10  syntax = "proto3";
    11  
    12  package {{.Package}};
    13  
    14  option go_package = "{{.GoPackage}}";
    15  option java_multiple_files = true;
    16  option java_package = "{{.JavaPackage}}";
    17  
    18  service {{.Service}} {
    19  	rpc Create{{.Service}} (Create{{.Service}}Request) returns (Create{{.Service}}Reply);
    20  	rpc Update{{.Service}} (Update{{.Service}}Request) returns (Update{{.Service}}Reply);
    21  	rpc Delete{{.Service}} (Delete{{.Service}}Request) returns (Delete{{.Service}}Reply);
    22  	rpc Get{{.Service}} (Get{{.Service}}Request) returns (Get{{.Service}}Reply);
    23  	rpc List{{.Service}} (List{{.Service}}Request) returns (List{{.Service}}Reply);
    24  }
    25  
    26  message Create{{.Service}}Request {}
    27  message Create{{.Service}}Reply {}
    28  
    29  message Update{{.Service}}Request {}
    30  message Update{{.Service}}Reply {}
    31  
    32  message Delete{{.Service}}Request {}
    33  message Delete{{.Service}}Reply {}
    34  
    35  message Get{{.Service}}Request {}
    36  message Get{{.Service}}Reply {}
    37  
    38  message List{{.Service}}Request {}
    39  message List{{.Service}}Reply {}
    40  `
    41  
    42  func (p *Proto) execute() ([]byte, error) {
    43  	buf := new(bytes.Buffer)
    44  	tmpl, err := template.New("proto").Parse(strings.TrimSpace(protoTemplate))
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  	if err := tmpl.Execute(buf, p); err != nil {
    49  		return nil, err
    50  	}
    51  	return buf.Bytes(), nil
    52  }