Skip to content

Commit

Permalink
schema: Introduce BuiltinReferences(modPath) (#93)
Browse files Browse the repository at this point in the history
* schema: Introduce BuiltinReferences(modPath)

* add comment
  • Loading branch information
radeksimko authored Feb 3, 2022
1 parent 313ebe7 commit 30b46a8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions internal/schema/refscope/scopes.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
)

var (
BuiltinScope = lang.ScopeId("builtin")
DataScope = lang.ScopeId("data")
LocalScope = lang.ScopeId("local")
ModuleScope = lang.ScopeId("module")
Expand Down
55 changes: 55 additions & 0 deletions schema/builtin_references.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package schema

import (
"github.com/hashicorp/hcl-lang/lang"
"github.com/hashicorp/hcl-lang/reference"
"github.com/hashicorp/terraform-schema/internal/schema/refscope"
"github.com/zclconf/go-cty/cty"
)

// BuiltinReferences returns known "built-in" reference targets
// (range-less references available within any module)
func BuiltinReferences(modPath string) reference.Targets {
return reference.Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "path"},
lang.AttrStep{Name: "module"},
},
ScopeId: refscope.BuiltinScope,
Type: cty.String,
Description: lang.Markdown("The filesystem path of the module where the expression is placed\n\n" +
modPath),
},
{
Addr: lang.Address{
lang.RootStep{Name: "path"},
lang.AttrStep{Name: "root"},
},
ScopeId: refscope.BuiltinScope,
Type: cty.String,
Description: lang.Markdown("The filesystem path of the root module of the configuration"),
},
{
Addr: lang.Address{
lang.RootStep{Name: "path"},
lang.AttrStep{Name: "cwd"},
},
ScopeId: refscope.BuiltinScope,
Type: cty.String,
Description: lang.Markdown("The filesystem path of the current working directory.\n\n" +
"In normal use of Terraform this is the same as `path.root`, " +
"but some advanced uses of Terraform run it from a directory " +
"other than the root module directory, causing these paths to be different."),
},
{
Addr: lang.Address{
lang.RootStep{Name: "terraform"},
lang.AttrStep{Name: "workspace"},
},
ScopeId: refscope.BuiltinScope,
Type: cty.String,
Description: lang.Markdown("The name of the currently selected workspace"),
},
}
}

0 comments on commit 30b46a8

Please sign in to comment.