MCPcopy
hub / github.com/spicetify/cli / FetchLatestTagMatchingVersion

Function FetchLatestTagMatchingVersion

src/preprocess/preprocess.go:1140–1179  ·  view source on GitHub ↗
(version string)

Source from the content-addressed store, hash-verified

1138}
1139
1140func FetchLatestTagMatchingVersion(version string) (string, error) {
1141 if version == "Dev" {
1142 return "Dev", nil
1143 }
1144 res, err := http.Get("https://api.github.com/repos/spicetify/cli/releases")
1145 if err != nil {
1146 return "", err
1147 }
1148
1149 defer res.Body.Close()
1150 body, err := io.ReadAll(res.Body)
1151 if err != nil {
1152 return "", err
1153 }
1154
1155 var releases []githubRelease
1156 if err = json.Unmarshal(body, &releases); err != nil {
1157 return "", err
1158 }
1159 curVer := strings.Split(version, ".")
1160 curVerMin, err2 := strconv.Atoi(curVer[2])
1161 if err2 != nil {
1162 return "", err2
1163 }
1164 for _, rel := range releases {
1165 ver := strings.Split(rel.TagName[1:], ".")
1166 if len(ver) != 3 {
1167 break
1168 } else {
1169 verMin, err := strconv.Atoi(ver[2])
1170 if err != nil {
1171 return "", err
1172 }
1173 if ver[0] == curVer[0] && ver[1] == curVer[1] && verMin > curVerMin {
1174 curVerMin = verMin
1175 }
1176 }
1177 }
1178 return "v" + curVer[0] + "." + curVer[1] + "." + strconv.Itoa(curVerMin), nil
1179}

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected