mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-21 22:41:42 +00:00
92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package mod
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
|
|
"golang.org/x/mod/modfile"
|
|
"sigs.k8s.io/kustomize/cmd/gorepomod/internal/misc"
|
|
"sigs.k8s.io/kustomize/cmd/gorepomod/internal/semver"
|
|
"sigs.k8s.io/kustomize/cmd/gorepomod/internal/utils"
|
|
)
|
|
|
|
// Module is an immutable representation of a Go module.
|
|
type Module struct {
|
|
repo misc.LaRepository
|
|
shortName misc.ModuleShortName
|
|
mf *modfile.File
|
|
vLocal semver.SemVer
|
|
vRemote semver.SemVer
|
|
}
|
|
|
|
func New(
|
|
repo misc.LaRepository,
|
|
shortName misc.ModuleShortName,
|
|
mf *modfile.File,
|
|
vl semver.SemVer,
|
|
vr semver.SemVer) *Module {
|
|
return &Module{
|
|
repo: repo,
|
|
shortName: shortName,
|
|
mf: mf,
|
|
vLocal: vl,
|
|
vRemote: vr,
|
|
}
|
|
}
|
|
|
|
func (m *Module) GitRepo() misc.LaRepository {
|
|
return m.repo
|
|
}
|
|
|
|
func (m *Module) VersionLocal() semver.SemVer {
|
|
return m.vLocal
|
|
}
|
|
|
|
func (m *Module) VersionRemote() semver.SemVer {
|
|
return m.vRemote
|
|
}
|
|
|
|
func (m *Module) ShortName() misc.ModuleShortName {
|
|
return m.shortName
|
|
}
|
|
|
|
func (m *Module) ImportPath() string {
|
|
return filepath.Join(m.repo.RepoPath(), string(m.ShortName()))
|
|
}
|
|
|
|
func (m *Module) AbsPath() string {
|
|
return filepath.Join(m.repo.AbsPath(), string(m.ShortName()))
|
|
}
|
|
|
|
func (m *Module) DependsOn(target misc.LaModule) (bool, semver.SemVer) {
|
|
for _, r := range m.mf.Require {
|
|
if r.Mod.Path == target.ImportPath() {
|
|
v, err := semver.Parse(r.Mod.Version)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return true, v
|
|
}
|
|
}
|
|
return false, semver.Zero()
|
|
}
|
|
|
|
func (m *Module) GetReplacements() (result []string) {
|
|
for _, r := range m.mf.Replace {
|
|
result = append(
|
|
result, fmt.Sprintf("%s => %s", r.Old.String(), r.New.String()))
|
|
}
|
|
return
|
|
}
|
|
|
|
func (m *Module) GetDisallowedReplacements(
|
|
allowedReplacements []string) (badReps []string) {
|
|
for _, r := range m.GetReplacements() {
|
|
m := utils.ExtractModule(r)
|
|
if !utils.SliceContains(allowedReplacements, m) {
|
|
badReps = append(badReps, r)
|
|
}
|
|
}
|
|
return badReps
|
|
}
|