diff options
Diffstat (limited to 'newsort.go')
| -rw-r--r-- | newsort.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/newsort.go b/newsort.go new file mode 100644 index 0000000..5b6084b --- /dev/null +++ b/newsort.go @@ -0,0 +1,58 @@ +package main + +import ( + "os" + "strings" +) + +func (pb *Files) makeNewSortfile(pf *File) { + f, _ := os.OpenFile(pf.Filebase+".newsort.pb.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + + header(f, pf) + + if sortmap["lock"] == "all" { + // if the lock is set to 'all' this means the mutex was put in the protoc-gen-go struct + } else { + syncLock(f, sortmap) + } + iterTop(f, sortmap) + iterNext(f, sortmap) + iterAppend(f, sortmap) // Append() enforce no unique keys + iterSortAll(f, sortmap) + + if argv.Append != "" { + sortmap["append"] = string(argv.Append) + iterAppend(f, sortmap) // Append() enforce unique key argv.Append + } + + for _, s := range uniqueKeys { + // log.Info("found unique key in .proto", s) + sortmap["sortBy"] = s + sortmap["sortKey"] = s + + iterSortBy(f, sortmap) + + sortmap["append"] = sortmap["sortKey"] + iterAppend(f, sortmap) // Append() enforce unique key argv.Append + + iterDelete(f, sortmap) + iterReplace(f, sortmap) + iterFind(f, sortmap) + } + + for _, s := range argv.Sort { + sortparts := strings.Split(s, ",") + sortmap["sortBy"] = sortparts[0] + sortmap["sortKey"] = sortparts[1] + + iterSortBy(f, sortmap) + + sortmap["append"] = sortmap["sortKey"] + iterAppend(f, sortmap) // Append() enforce unique key argv.Append + + iterDelete(f, sortmap) + iterReplace(f, sortmap) + iterFind(f, sortmap) + } + iterEnd(f, sortmap) +} |
