/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/command/plugins_lock.go
59 строк
2 KB
Radek Simko
make copyrightfix
17 фев 2026, 16:56
17 фев 2026, 16:56
0fe906f
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package command import ( "encoding/json" "fmt" "io/ioutil" "log" ) type pluginSHA256LockFile struct { Filename string } // Read loads the lock information from the file and returns it. If the file // cannot be read, an empty map is returned to indicate that _no_ providers // are acceptable, since the user must run "terraform init" to lock some // providers before a context can be created. func (pf *pluginSHA256LockFile) Read() map[string][]byte { // Returning an empty map is different than nil because it causes // us to reject all plugins as uninitialized, rather than applying no // constraints at all. // // We don't surface any specific errors here because we want it to all // roll up into our more-user-friendly error that appears when plugin // constraint verification fails during context creation. digests := make(map[string][]byte) buf, err := ioutil.ReadFile(pf.Filename) if err != nil { // This is expected if the user runs any context-using command before // running "terraform init". log.Printf("[INFO] Failed to read plugin lock file %s: %s", pf.Filename, err) return digests } var strDigests map[string]string err = json.Unmarshal(buf, &strDigests) if err != nil { // This should never happen unless the user directly edits the file. log.Printf("[WARN] Plugin lock file %s failed to parse as JSON: %s", pf.Filename, err) return digests } for name, strDigest := range strDigests { var digest []byte _, err := fmt.Sscanf(strDigest, "%x", &digest) if err == nil { digests[name] = digest } else { // This should never happen unless the user directly edits the file. log.Printf("[WARN] Plugin lock file %s has invalid digest for %q", pf.Filename, name) } } return digests }