github.com/terraform-linters/tflint@v0.51.2-0.20240520175844-3750771571b6/terraform/meta.go (about)

     1  package terraform
     2  
     3  import (
     4  	"bytes"
     5  	"log"
     6  	"os"
     7  	"path/filepath"
     8  )
     9  
    10  func dataDir() string {
    11  	dir := os.Getenv("TF_DATA_DIR")
    12  	if dir != "" {
    13  		log.Printf("[INFO] TF_DATA_DIR environment variable found: %s", dir)
    14  	} else {
    15  		// The default data dir is always `.terraform` in the current directory
    16  		dir = ".terraform"
    17  	}
    18  
    19  	return dir
    20  }
    21  
    22  func Workspace() string {
    23  	if envVar := os.Getenv("TF_WORKSPACE"); envVar != "" {
    24  		log.Printf("[INFO] TF_WORKSPACE environment variable found: %s", envVar)
    25  		return envVar
    26  	}
    27  
    28  	envData, _ := os.ReadFile(filepath.Join(dataDir(), "environment"))
    29  	current := string(bytes.TrimSpace(envData))
    30  	if current != "" {
    31  		log.Printf("[INFO] environment file found: %s", current)
    32  	} else {
    33  		current = "default"
    34  	}
    35  
    36  	return current
    37  }