package clientgen import ( "bytes" "fmt" "strings" "encr.dev/internal/version" meta "encr.dev/proto/encore/parser/meta/v1" ) func doNotEditHeader() string { return fmt.Sprintf("Code generated by the Encore %s client generator. DO NOT EDIT.", version.Version) } func hasPublicRPC(svc *meta.Service) bool { for _, rpc := range svc.Rpcs { if rpc.AccessType != meta.RPC_PRIVATE { return true } } return false } type indentWriter struct { w *bytes.Buffer depth int indent string firstWriteOnLine bool } func (w *indentWriter) Indent() *indentWriter { return &indentWriter{ w: w.w, depth: w.depth + 1, indent: w.indent, firstWriteOnLine: true, } } func (w *indentWriter) Dedent() *indentWriter { return &indentWriter{ w: w.w, depth: max(w.depth-1, 0), indent: w.indent, firstWriteOnLine: true, } } func (w *indentWriter) WriteString(s string) { parts := strings.Split(s, "\n") for i, part := range parts { if i > 0 { w.w.WriteString("\n") w.firstWriteOnLine = true } if part == "" { continue } if w.firstWriteOnLine { w.w.WriteString(strings.Repeat(w.indent, w.depth)) w.firstWriteOnLine = false } w.w.WriteString(part) } } func (w *indentWriter) WriteStringf(s string, args ...interface{}) { w.WriteString(fmt.Sprintf(s, args...)) }