github.com/paybyphone/terraform@v0.9.5-0.20170613192930-9706042ddd51/terraform/path.go (about)

     1  package terraform
     2  
     3  import (
     4  	"crypto/md5"
     5  	"encoding/hex"
     6  )
     7  
     8  // PathCacheKey returns a cache key for a module path.
     9  //
    10  // TODO: test
    11  func PathCacheKey(path []string) string {
    12  	// There is probably a better way to do this, but this is working for now.
    13  	// We just create an MD5 hash of all the MD5 hashes of all the path
    14  	// elements. This gets us the property that it is unique per ordering.
    15  	hash := md5.New()
    16  	for _, p := range path {
    17  		single := md5.Sum([]byte(p))
    18  		if _, err := hash.Write(single[:]); err != nil {
    19  			panic(err)
    20  		}
    21  	}
    22  
    23  	return hex.EncodeToString(hash.Sum(nil))
    24  }