From 2ee05653fc66a4f24f65d36489c890e1552bc453 Mon Sep 17 00:00:00 2001 From: Bryan Chen Date: Thu, 25 Apr 2024 02:14:41 -0700 Subject: [PATCH] Gnome checker --- checkers/gnome.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 checkers/gnome.go diff --git a/checkers/gnome.go b/checkers/gnome.go new file mode 100644 index 0000000..9835512 --- /dev/null +++ b/checkers/gnome.go @@ -0,0 +1,52 @@ +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 + }), + }, +}