summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parseProtoFile.go33
-rw-r--r--testfiles/auto.proto22
2 files changed, 35 insertions, 20 deletions
diff --git a/parseProtoFile.go b/parseProtoFile.go
index b62e5e2..49f382c 100644
--- a/parseProtoFile.go
+++ b/parseProtoFile.go
@@ -38,18 +38,33 @@ func (pb *Files) findAutogenpb(f *File) error {
// log.Info("line:", line)
parts := strings.Fields(line)
- if strings.Contains(line, "autogenpb:marshal") {
- newm := parts[1]
- if curmsg != nil {
- // log.Info("found marshal", newm)
- marshalKeys = append(marshalKeys, newm)
+
+ 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") {
- newu := parts[1]
- newu = cases.Title(language.English, cases.NoLower).String(newu)
- // log.Info("found unique field", newu)
- uniqueKeys = append(uniqueKeys, newu)
+ 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
diff --git a/testfiles/auto.proto b/testfiles/auto.proto
index 4095b0d..b2166e8 100644
--- a/testfiles/auto.proto
+++ b/testfiles/auto.proto
@@ -21,11 +21,11 @@ message Apple { // `autogenpb:marshal`
}
message Apples { // `autogenpb:marshal` `autogenpb:mutex`
- string uuid = 1; // `autogen:default:b2a2de35-07b6-443b-8188-709e27bee8a7`
- string version = 2; // `autogen:default:2`
- repeated Apple Apples = 3; // `autogen:sort`
- repeated Pears More = 4; // `autogen:sort`
- repeated string Color = 5; // `autogen:sort` `autogen:unique`
+ string uuid = 1; // `autogenpb:default:b2a2de35-07b6-443b-8188-709e27bee8a7`
+ string version = 2; // `autogenpb:default:2`
+ repeated Apple Apples = 3; // `autogenpb:sort`
+ repeated Pears More = 4; // `autogenpb:sort`
+ repeated string Color = 5; // `autogenpb:sort` `autogenpb:unique`
}
message Pears {
@@ -70,13 +70,13 @@ message MsgName {
repeated string unique = 5; // if the fields should have AppendUnique() functions
}
-message File { // `autogen:nomarshal`
+message File { // `autogenpb:nomarshal`
string name = 1; // for this one: autogen.proto
string uuid = 2; // the uuid to use in a func NewMsgName()
int64 version = 3; // the version to use in a func NewMsgName()
// in this proto file, this would have "Apple", "Apples", ... "File", etc...
- repeated MsgName msgNames = 4; // `autogen:unique` // in this file
+ repeated MsgName msgNames = 4; // `autogenpb:unique` // in this file
}
// I know, I know, the whole point of using protobuf
@@ -85,15 +85,15 @@ message File { // `autogen:nomarshal`
// trivial and empty protobuf message can marshal and identify all the files
// also, this could be used to modify /usr/bin/file /usr/share/magic to identify the files
// maybe this is already been done and is pointless, but it seems like a good idea
-message Files { // `autogen:marshal`
- string uuid = 1; // `autogen:uuid:fakeuuid`
- int64 version = 2; // `autogen:id:42`
+message Files { // `autogenpb:marshal`
+ string uuid = 1; // `autogenpb:uuid:fakeuuid`
+ int64 version = 2; // `autogenpb:id:42`
repeated File Files = 3; // an array of each .proto file in the working directory
}
// this generic message is used by autogen to identify and
// then dump the uuid and version from any arbitrary .pb file
-message Identify { // `autogen:marshal`
+message Identify { // `autogenpb:marshal`
string uuid = 1; //
int64 version = 2; //
}