format.go 833 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package format
  2. import (
  3. "bytes"
  4. "io"
  5. "os"
  6. "github.com/zeromicro/go-zero/tools/goctl/pkg/parser/api/parser"
  7. )
  8. // File formats the api file.
  9. func File(filename string) error {
  10. data, err := os.ReadFile(filename)
  11. if err != nil {
  12. return err
  13. }
  14. buffer := bytes.NewBuffer(nil)
  15. if err := Source(data, buffer); err != nil {
  16. return err
  17. }
  18. return os.WriteFile(filename, buffer.Bytes(), 0666)
  19. }
  20. // Source formats the api source.
  21. func Source(source []byte, w io.Writer) error {
  22. p := parser.New("", source)
  23. result := p.Parse()
  24. if err := p.CheckErrors(); err != nil {
  25. return err
  26. }
  27. result.Format(w)
  28. return nil
  29. }
  30. func formatForUnitTest(source []byte, w io.Writer) error {
  31. p := parser.New("", source)
  32. result := p.Parse()
  33. if err := p.CheckErrors(); err != nil {
  34. return err
  35. }
  36. result.FormatForUnitTest(w)
  37. return nil
  38. }