25 lines
585 B
Go
25 lines
585 B
Go
|
package terraform
|
||
|
|
||
|
import (
|
||
|
"crypto/md5"
|
||
|
"encoding/hex"
|
||
|
)
|
||
|
|
||
|
// PathCacheKey returns a cache key for a module path.
|
||
|
//
|
||
|
// TODO: test
|
||
|
func PathCacheKey(path []string) string {
|
||
|
// There is probably a better way to do this, but this is working for now.
|
||
|
// We just create an MD5 hash of all the MD5 hashes of all the path
|
||
|
// elements. This gets us the property that it is unique per ordering.
|
||
|
hash := md5.New()
|
||
|
for _, p := range path {
|
||
|
single := md5.Sum([]byte(p))
|
||
|
if _, err := hash.Write(single[:]); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return hex.EncodeToString(hash.Sum(nil))
|
||
|
}
|