]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/terraform/config/module/tree.go
Merge pull request #3 from terraform-providers/vendor-tf-0.10
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / config / module / tree.go
index b6f90fd9305b2aafcc255f5cfa2aee9547874395..4b0b153f726dbd2a7f0b9cc39372d611768b6da0 100644 (file)
@@ -92,6 +92,25 @@ func (t *Tree) Children() map[string]*Tree {
        return t.children
 }
 
+// DeepEach calls the provided callback for the receiver and then all of
+// its descendents in the tree, allowing an operation to be performed on
+// all modules in the tree.
+//
+// Parents will be visited before their children but otherwise the order is
+// not defined.
+func (t *Tree) DeepEach(cb func(*Tree)) {
+       t.lock.RLock()
+       defer t.lock.RUnlock()
+       t.deepEach(cb)
+}
+
+func (t *Tree) deepEach(cb func(*Tree)) {
+       cb(t)
+       for _, c := range t.children {
+               c.deepEach(cb)
+       }
+}
+
 // Loaded says whether or not this tree has been loaded or not yet.
 func (t *Tree) Loaded() bool {
        t.lock.RLock()