From 0100d4139bff5e574afad3a4d5a37ed410fd5c54 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 25 Jun 2015 22:01:54 -0700 Subject: [PATCH] helper/schema: clean up style --- helper/schema/schema.go | 100 ++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 65 deletions(-) diff --git a/helper/schema/schema.go b/helper/schema/schema.go index 0534d3f8a0..ec0c8dd51f 100644 --- a/helper/schema/schema.go +++ b/helper/schema/schema.go @@ -842,76 +842,46 @@ func (m schemaMap) diffSet( }) } - removed := os.Difference(ns) - for _, code := range removed.listCode() { - // If the code is negative (first character is -) then - // replace it with "~" for our computed set stuff. - codeStr := strconv.Itoa(code) - if codeStr[0] == '-' { - codeStr = string('~') + codeStr[1:] - } + // Build the list of codes that will make up our set. This is the + // removed codes as well as all the codes in the new codes. + codes := make([][]int, 2) + codes[0] = os.Difference(ns).listCode() + codes[1] = ns.listCode() + for _, list := range codes { + for _, code := range list { + // If the code is negative (first character is -) then + // replace it with "~" for our computed set stuff. + codeStr := strconv.Itoa(code) + if codeStr[0] == '-' { + codeStr = string('~') + codeStr[1:] + } - switch t := schema.Elem.(type) { - case *Resource: - // This is a complex resource - for k2, schema := range t.Schema { - subK := fmt.Sprintf("%s.%s.%s", k, codeStr, k2) - err := m.diff(subK, schema, diff, d, true) + switch t := schema.Elem.(type) { + case *Resource: + // This is a complex resource + for k2, schema := range t.Schema { + subK := fmt.Sprintf("%s.%s.%s", k, codeStr, k2) + err := m.diff(subK, schema, diff, d, true) + if err != nil { + return err + } + } + case *Schema: + // Copy the schema so that we can set Computed/ForceNew from + // the parent schema (the TypeSet). + t2 := *t + t2.ForceNew = schema.ForceNew + + // This is just a primitive element, so go through each and + // just diff each. + subK := fmt.Sprintf("%s.%s", k, codeStr) + err := m.diff(subK, &t2, diff, d, true) if err != nil { return err } + default: + return fmt.Errorf("%s: unknown element type (internal)", k) } - case *Schema: - // Copy the schema so that we can set Computed/ForceNew from - // the parent schema (the TypeSet). - t2 := *t - t2.ForceNew = schema.ForceNew - - // This is just a primitive element, so go through each and - // just diff each. - subK := fmt.Sprintf("%s.%s", k, codeStr) - err := m.diff(subK, &t2, diff, d, true) - if err != nil { - return err - } - default: - return fmt.Errorf("%s: unknown element type (internal)", k) - } - } - - for _, code := range ns.listCode() { - // If the code is negative (first character is -) then - // replace it with "~" for our computed set stuff. - codeStr := strconv.Itoa(code) - if codeStr[0] == '-' { - codeStr = string('~') + codeStr[1:] - } - - switch t := schema.Elem.(type) { - case *Resource: - // This is a complex resource - for k2, schema := range t.Schema { - subK := fmt.Sprintf("%s.%s.%s", k, codeStr, k2) - err := m.diff(subK, schema, diff, d, true) - if err != nil { - return err - } - } - case *Schema: - // Copy the schema so that we can set Computed/ForceNew from - // the parent schema (the TypeSet). - t2 := *t - t2.ForceNew = schema.ForceNew - - // This is just a primitive element, so go through each and - // just diff each. - subK := fmt.Sprintf("%s.%s", k, codeStr) - err := m.diff(subK, &t2, diff, d, true) - if err != nil { - return err - } - default: - return fmt.Errorf("%s: unknown element type (internal)", k) } }