main.go 833 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "bufio"
  4. "context"
  5. "fmt"
  6. "io"
  7. "os"
  8. "github.com/sqlc-dev/sqlc/internal/codegen/json"
  9. "github.com/sqlc-dev/sqlc/internal/plugin"
  10. "google.golang.org/protobuf/proto"
  11. )
  12. func main() {
  13. if err := run(); err != nil {
  14. fmt.Fprintf(os.Stderr, "error generating JSON: %s", err)
  15. os.Exit(2)
  16. }
  17. }
  18. func run() error {
  19. var req plugin.GenerateRequest
  20. reqBlob, err := io.ReadAll(os.Stdin)
  21. if err != nil {
  22. return err
  23. }
  24. if err := proto.Unmarshal(reqBlob, &req); err != nil {
  25. return err
  26. }
  27. resp, err := json.Generate(context.Background(), &req)
  28. if err != nil {
  29. return err
  30. }
  31. respBlob, err := proto.Marshal(resp)
  32. if err != nil {
  33. return err
  34. }
  35. w := bufio.NewWriter(os.Stdout)
  36. if _, err := w.Write(respBlob); err != nil {
  37. return err
  38. }
  39. if err := w.Flush(); err != nil {
  40. return err
  41. }
  42. return nil
  43. }