Skip to content

hashicorp/go-terraform-address

tf-address

CircleCI

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
}

About

Library for parsing tf addresses

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages