mirror-checker/checkers/gnome.go

53 lines
1.9 KiB
Go

package checkers
import {
"fmt"
"io/ioutil"
"net/http"
"regexp"
"strings"
"time"
}
var OpenBSDProject Project = Project{
Name: "openbsd",
Properties: DefaultProjectProperties,
NumOfCheckers: 1,
Checkers: []*ProjectChecker {
GetDefaultChecker("openbsd", true, func(*Project) (bool, error) {
file := data[project].(map[string]string)["file1"]
cscVersions, err := httpGET(CSCMirror + data[project].(map[string]string)["csc"] + file)
if err != nil {
return false, GetError(err, "OpenBSD", "getting CSC file")
}
upstreamVersions, err := httpGET(data[project].(map[string]string)["upstream"] + file)
if err != nil {
return false, GetError(err, "OpenBSD", "getting upstream file")
}
cscLatest := regexp.MustCompile(`"\d+\.?\d*"`).FindAllStringSubmatch(cscVersions, -1)
upstreamLatest := regexp.MustCompile(`"\d+\.?\d*"`).FindAllStringSubmatch(upstreamVersions, -1)
if cscLatest[len(cscLatest) - 1][0] != upstreamLatest[len(upstreamLatest) - 1][0]) {
return false, GetError(nil, "OpenBSD", "latest versions do not match")
}
file += cscLatest[len(cscLatest) - 1][0] + "/"
cscVersions, err = httpGET(CSCMirror + data[project].(map[string]string)["csc"] + file + data[project].(map[string]string)["file2"])
if err != nil {
return false, GetError(err, "OpenBSD", "getting CSC file")
}
upstreamVersions, err = httpGET(data[project].(map[string]string)["upstream2"] + file + data[project].(map[string]string)["file2"])
if err != nil {
return false, GetError(err, "OpenBSD", "getting upstream file")
}
ret := cscVersions == upstreamVersions
if !ret {
upstreamVersions, err = httpGET(data[project].(map[string]string)["upstream3"] + file + data[project].(map[string]string)["file2"])
if err != nil {
return false, GetError(err, "OpenBSD", "getting upstream file")
}
ret = cscVersions == upstreamVersions
}
return ret, nil
}),
},
}