package loader import ( "fmt" "galaxy/connector" "galaxy/util" "runtime" "slices" ) func resolvePluginFile(version string) string { return libUIPluginFile + "-" + version } // latestVersion should return VersionInfo with the latest Version for the current OD func latestVersion(versions []connector.VersionInfo) (connector.VersionInfo, bool, error) { os := runtime.GOOS versions = slices.DeleteFunc(versions, func(v connector.VersionInfo) bool { return v.OS != os }) if len(versions) == 0 { return connector.VersionInfo{}, false, nil } type v struct { vi *connector.VersionInfo sv *util.SemVer } semvers := make([]*v, len(versions)) for i := range versions { sv, err := util.ParseSemver(versions[i].Version) if err != nil { return connector.VersionInfo{}, false, fmt.Errorf("latest version: %w", err) } semvers[i] = &v{ vi: &versions[i], sv: &sv, } } slices.SortFunc(semvers, func(a, b *v) int { return util.CompareSemver(*b.sv, *a.sv) }) return *semvers[0].vi, true, nil }