upup: move string-slice comparison functions to utils

This commit is contained in:
Justin Santa Barbara 2016-05-30 17:46:11 -04:00
parent 1aeea67510
commit 3aeaf73788
2 changed files with 31 additions and 13 deletions

View File

@ -126,18 +126,6 @@ func (t *CloudInitTarget) Chown(path string, user, group string) {
t.AddCommand(Always, "chown", user+":"+group, path)
}
func stringSlicesEquals(l, r []string) bool {
if len(l) != len(r) {
return false
}
for i, v := range l {
if r[i] != v {
return false
}
}
return true
}
func (t *CloudInitTarget) AddCommand(addBehaviour AddBehaviour, args ...string) {
switch addBehaviour {
case Always:
@ -145,7 +133,7 @@ func (t *CloudInitTarget) AddCommand(addBehaviour AddBehaviour, args ...string)
case Once:
for _, c := range t.Config.RunCommmands {
if stringSlicesEquals(args, c) {
if utils.StringSlicesEqual(args, c) {
glog.V(2).Infof("skipping pre-existing command because AddBehaviour=Once: %q", args)
return
}

View File

@ -0,0 +1,30 @@
package utils
func StringSlicesEqual(l, r []string) bool {
if len(l) != len(r) {
return false
}
for i, v := range l {
if r[i] != v {
return false
}
}
return true
}
func StringSlicesEqualIgnoreOrder(l, r []string) bool {
if len(l) != len(r) {
return false
}
lMap := map[string]bool{}
for _, lv := range l {
lMap[lv] = true
}
for _, rv := range r {
if !lMap[rv] {
return false
}
}
return true
}