Ctrl K
ComunidadGuías…

pkg/clientgen/utils.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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...))
}