go-terraform-address

Library for parsing tf addresses

MPL-2.0 License

Stars
12
Committers
7

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
}
Package Rankings
Top 5.42% on Proxy.golang.org
Badges
Extracted from project README
CircleCI
Related Projects