github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/runners/manifest/version.go (about) 1 package manifest 2 3 import ( 4 "github.com/ActiveState/cli/internal/locale" 5 "github.com/ActiveState/cli/internal/output" 6 "github.com/ActiveState/cli/pkg/buildplan" 7 "github.com/ActiveState/cli/pkg/platform/api/buildplanner/types" 8 platformModel "github.com/ActiveState/cli/pkg/platform/model" 9 ) 10 11 type resolvedVersion struct { 12 Requested string `json:"requested"` 13 Resolved string `json:"resolved"` 14 } 15 16 func (v *resolvedVersion) String() string { 17 if v.Resolved != "" { 18 return locale.Tl("manifest_version_resolved", "[CYAN]{{.V0}}[/RESET] → [CYAN]{{.V1}}[/RESET]", v.Requested, v.Resolved) 19 } 20 return locale.Tl("manifest_version", "[CYAN]{{.V0}}[/RESET]", v.Requested) 21 } 22 23 func (v *resolvedVersion) MarshalStructured(_ output.Format) interface{} { 24 if v.Resolved == "" { 25 v.Resolved = v.Requested 26 } 27 28 if v.Requested == "auto" { 29 v.Requested = "" 30 } 31 32 return v 33 } 34 35 func resolveVersion(req types.Requirement, bpReqs buildplan.Ingredients) *resolvedVersion { 36 var requested string 37 var resolved string 38 39 if req.VersionRequirement != nil { 40 requested = platformModel.BuildPlannerVersionConstraintsToString(req.VersionRequirement) 41 } else { 42 requested = locale.Tl("manifest_version_auto", "auto") 43 for _, bpr := range bpReqs { 44 if bpr.Namespace == req.Namespace && bpr.Name == req.Name { 45 resolved = bpr.Version 46 break 47 } 48 } 49 } 50 51 return &resolvedVersion{ 52 Requested: requested, 53 Resolved: resolved, 54 } 55 }