53 lines
1.9 KiB
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
|
|
}),
|
|
},
|
|
}
|