summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go23
1 files changed, 16 insertions, 7 deletions
diff --git a/main.go b/main.go
index 0763542..2a7d0fd 100644
--- a/main.go
+++ b/main.go
@@ -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, "}")