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 }), }, }