mirror of
https://github.com/hashicorp/go-terraform-address
synced 2026-04-05 18:56:47 +00:00
No description
- Go 100%
|
|
||
|---|---|---|
| .github | ||
| address.go | ||
| address.peg | ||
| address_ast.go | ||
| address_test.go | ||
| CODEOWNERS | ||
| gen.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
tf-address
This package provides utilities for properly parsing Terraform addresses.
The parser is implemented using pigeon, a PEG implementation.
Addresses
Resource addresses are described by the Terraform documentation.
Identifiers are described in the Terraform Configuration Syntax document
Generating
If you change the peg, please regenerate the go code with:
go get -u github.com/mna/pigeon
go generate .
You may need to clean up the go.mod with:
go mod tidy
Examples
package main
import (
"fmt"
address "github.com/hashicorp/go-terraform-address"
)
func main() {
a, err := address.NewAddress(`module.first.module.second["xyz"].resource.name[2]`)
if err != nil {
panic(err)
}
fmt.Println(len(a.ModulePath)) // 2
fmt.Println(a.ModulePath[0].Name) // "first"
fmt.Println(a.ModulePath[1].Index.String()) // "xyz"
fmt.Printf("%T\n", a.ModulePath[1].Index.Value) // string
fmt.Println(a.ResourceSpec.Type) // "resource"
fmt.Println(a.ResourceSpec.Name) // "name"
fmt.Printf("%T\n", a.ResourceSpec.Index.Value) // int
}