| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package moduleref | |
| import ( | |
| "github.com/hashicorp/go-version" | |
| "github.com/hashicorp/terraform/internal/addrs" | |
| ) | |
| const FormatVersion = "1.0" | |
| // ModuleRecord is the implementation of a module entry defined in the module | |
| // manifest that is declared by configuration. | |
| type Record struct { | |
| Key string | |
| Source addrs.ModuleSource | |
| Version *version.Version | |
| VersionConstraints version.Constraints | |
| Children Records | |
| } | |
| // ModuleRecordManifest is the view implementation of module entries declared | |
| // in configuration | |
| type Manifest struct { | |
| FormatVersion string | |
| Records Records | |
| } | |
| func (m *Manifest) addModuleEntry(entry *Record) { | |
| m.Records = append(m.Records, entry) | |
| } | |
| func (r *Record) addChild(child *Record) { | |
| r.Children = append(r.Children, child) | |
| } | |
| type Records []*Record | |
| func (r Records) Len() int { | |
| return len(r) | |
| } | |
| func (r Records) Less(i, j int) bool { | |
| return r[i].Key < r[j].Key | |
| } | |
| func (r Records) Swap(i, j int) { | |
| r[i], r[j] = r[j], r[i] | |
| } |