diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -64,6 +64,9 @@ func main() { sortmap["sortBy"] = sortparts[0] sortmap["sortKey"] = sortparts[1] + // will keep this key unique if defined + sortmap["append"] = argv.Append + if argv.DryRun { for k, v := range sortmap { log.Info(k, "=", v) @@ -214,17 +217,23 @@ func iterEnd(w io.Writer, names map[string]string) { } func iterAppend(w io.Writer, names map[string]string) { - fmt.Fprintln(w, "// enforces no duplicate Refname names") + if names["append"] != "" { + fmt.Fprintln(w, "// enforces "+names["append"]+" is unique") + } else { + fmt.Fprintln(w, "// does not enforce any unique fields") + } fmt.Fprintln(w, "func (all *"+names["Bases"]+") Append(newP *"+names["Base"]+") bool {") fmt.Fprintln(w, " "+names["lock"]+".Lock()") fmt.Fprintln(w, " defer "+names["lock"]+".Unlock()") fmt.Fprintln(w, "") - fmt.Fprintln(w, " for _, p := range all."+names["Bases"]+" {") - fmt.Fprintln(w, " if p.Refname == newP.Refname {") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, "") + if names["append"] != "" { + fmt.Fprintln(w, " for _, p := range all."+names["Bases"]+" {") + fmt.Fprintln(w, " if p."+names["append"]+" == newP."+names["append"]+" {") + fmt.Fprintln(w, " return false") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, "") + } fmt.Fprintln(w, " all."+names["Bases"]+" = append(all."+names["Bases"]+", newP)") fmt.Fprintln(w, " return true") fmt.Fprintln(w, "}") |
