mirror of
https://github.com/hashicorp/terraform.git
synced 2026-03-21 18:10:30 -04:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
// 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]
|
|
}
|