summaryrefslogtreecommitdiff
path: root/parseProtoFile.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-09 03:44:09 -0600
committerJeff Carr <[email protected]>2025-01-09 03:44:09 -0600
commit6f354d8d9f2d34505794f5f842de967297a78616 (patch)
tree8bc10cd5c9966b8ea9550cd3da9a32d50a3c61be /parseProtoFile.go
parent4ff3a92bc684dfc2d136b1d2ae620097573056b9 (diff)
rename file
Diffstat (limited to 'parseProtoFile.go')
-rw-r--r--parseProtoFile.go130
1 files changed, 0 insertions, 130 deletions
diff --git a/parseProtoFile.go b/parseProtoFile.go
deleted file mode 100644
index 49f382c..0000000
--- a/parseProtoFile.go
+++ /dev/null
@@ -1,130 +0,0 @@
-package main
-
-// auto run protoc with the correct args
-
-import (
- "os"
- "strings"
-
- "go.wit.com/log"
- "golang.org/x/text/cases"
- "golang.org/x/text/language"
-)
-
-// this parses the .proto file and handles anything with `autogenpb: `
-
-// finds autogenpb:marshal and autogenpb:unique in the .proto file
-//
-// adds fields to []marshal and []unique
-func (pb *Files) findAutogenpb(f *File) error {
- // log.Info("starting findAutogenpb() on", names["protofile"])
- // read in the .proto file
- data, err := os.ReadFile(f.Filename)
- if err != nil {
- // log.Info("open config file :", err)
- return err
- }
-
- var curmsg *MsgName
-
- // parse the proto file for message struct names
- for _, line := range strings.Split(string(data), "\n") {
- if strings.HasPrefix(line, "message ") {
- curmsg = f.parseForMessage(line)
- }
- if strings.HasPrefix(line, "}") {
- curmsg = nil
- }
-
- // log.Info("line:", line)
- parts := strings.Fields(line)
-
- if strings.Contains(line, "autogenpb:sort") {
- if parts[0] == "repeated" {
- newm := parts[1]
- if curmsg == nil {
- log.Info("Error: Found Sort for:", newm, "however, this struct can't be used")
- // log.Info("found marshal", newm)
- marshalKeys = append(marshalKeys, newm)
- } else {
- log.Info("Found Sort for:", newm, "in struct", curmsg.Name)
- }
- } else {
- log.Info("Error:", line)
- log.Info("Error: can not sort on non repeated fields")
- }
- }
- if strings.Contains(line, "autogenpb:unique") {
- if parts[0] == "repeated" {
- // log.Info("Found Unique for:", parts)
- newu := parts[1]
- newu = cases.Title(language.English, cases.NoLower).String(newu)
- log.Info("found unique field", newu, "in struct", curmsg.Name)
- // uniqueKeys = append(uniqueKeys, newu)
- } else {
- log.Info("Error:", line)
- log.Info("Error: can not append on non repeated fields")
- }
- }
- }
- return nil
-}
-
-// looks for mutex and marshal entries
-func (f *File) parseForMessage(line string) *MsgName {
- fields := strings.Fields(line)
- if fields[0] != "message" {
- return nil
- }
- msgName := fields[1]
- msg := new(MsgName)
- f.MsgNames = append(f.MsgNames, msg)
- msg.Name = msgName
-
- if strings.Contains(line, "`autogenpb:mutex`") {
- msg.DoMutex = true
- log.Info("Found Mutex for:", msg.Name)
- }
- if strings.Contains(line, "`autogenpb:marshal`") {
- msg.DoMarshal = true
- log.Info("Found Marshal for:", msg.Name)
- }
- return msg
-}
-
-func (pb *Files) findGlobalAutogenpb(f *File) error {
- // log.Info("starting findAutogenpb() on", filename)
- // read in the .proto file
- data, err := os.ReadFile(f.Filename)
- if err != nil {
- // log.Info("open config file :", err)
- return err
- }
-
- lines := strings.Split(string(data), "\n")
- for _, line := range lines {
- if strings.Contains(line, "autogenpb:ignoreproto") {
- // ignore this protofile completely (don't make foo.pb.go)
- os.Exit(0)
- }
- if strings.Contains(line, "autogenpb:no-marshal") {
- // don't marshal anything (don't make foo.marshal.pb.go)
- argv.NoMarshal = true
- }
- if strings.Contains(line, "autogenpb:no-sort") {
- // don't sort anything (don't make foo.sort.pb.go)
- argv.NoSort = true
- }
- if strings.Contains(line, "autogenpb:mutex") {
- // try the mutex hack
- argv.Mutex = true
- }
- if strings.Contains(line, "autogenpb:gover:") {
- // todo: parse the output here
- parts := strings.Split(line, "autogenpb:gover:")
- log.Info("found gover:", parts[1])
- argv.Mutex = true
- }
- }
- return nil
-}