]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - terraform/node_local.go
Merge branch 'fix_read_test' of github.com:alexandreFre/terraform-provider-statuscake
[github/fretlink/terraform-provider-statuscake.git] / terraform / node_local.go
1 package terraform
2
3 import (
4 "fmt"
5 "strings"
6
7 "github.com/hashicorp/terraform/config"
8 )
9
10 // NodeLocal represents a named local value in a particular module.
11 //
12 // Local value nodes only have one operation, common to all walk types:
13 // evaluate the result and place it in state.
14 type NodeLocal struct {
15 PathValue []string
16 Config *config.Local
17 }
18
19 func (n *NodeLocal) Name() string {
20 result := fmt.Sprintf("local.%s", n.Config.Name)
21 if len(n.PathValue) > 1 {
22 result = fmt.Sprintf("%s.%s", modulePrefixStr(n.PathValue), result)
23 }
24
25 return result
26 }
27
28 // GraphNodeSubPath
29 func (n *NodeLocal) Path() []string {
30 return n.PathValue
31 }
32
33 // RemovableIfNotTargeted
34 func (n *NodeLocal) RemoveIfNotTargeted() bool {
35 return true
36 }
37
38 // GraphNodeReferenceable
39 func (n *NodeLocal) ReferenceableName() []string {
40 name := fmt.Sprintf("local.%s", n.Config.Name)
41 return []string{name}
42 }
43
44 // GraphNodeReferencer
45 func (n *NodeLocal) References() []string {
46 var result []string
47 result = append(result, ReferencesFromConfig(n.Config.RawConfig)...)
48 for _, v := range result {
49 split := strings.Split(v, "/")
50 for i, s := range split {
51 split[i] = s + ".destroy"
52 }
53
54 result = append(result, strings.Join(split, "/"))
55 }
56
57 return result
58 }
59
60 // GraphNodeEvalable
61 func (n *NodeLocal) EvalTree() EvalNode {
62 return &EvalLocal{
63 Name: n.Config.Name,
64 Value: n.Config.RawConfig,
65 }
66 }