Compare commits

..

No commits in common. "e7e24f7c8ff0dc2d0f9b2a6f21e595c3a4585264" and "a5767cf040c64c1c1e85f881a3aa9f92f01f94f8" have entirely different histories.

3 changed files with 27 additions and 14 deletions

View File

@ -39,7 +39,7 @@ var Version string
// Generally, err is used for runtime errors, and checkRes is used for the result of the checks. // Generally, err is used for runtime errors, and checkRes is used for the result of the checks.
func main() { func main() {
var gitWhitelist, metaFile, releaseTag []string var gitWhitelist, metaFile []string
showVersion := flag.Bool("version", false, "print current version") showVersion := flag.Bool("version", false, "print current version")
checkRelease := flag.Bool("checkRelease", true, "trigger release check") checkRelease := flag.Bool("checkRelease", true, "trigger release check")
rootDir := flag.String("root", "", "") rootDir := flag.String("root", "", "")
@ -47,11 +47,12 @@ func main() {
size := flag.Float64("reposize", 2, "size of the repo") size := flag.Float64("reposize", 2, "size of the repo")
localList := flag.String("localList", "", "") localList := flag.String("localList", "", "")
droneBranch := flag.String("droneBranch", "", "") droneBranch := flag.String("droneBranch", "", "")
releaseCategories := flag.String("releaseCategories", "", "")
releaseNumber := flag.Int("releaseNumber", 0, "")
checkFileNameList := flag.String("checkFileNameList", "", "Comma-separated list of files to check.") checkFileNameList := flag.String("checkFileNameList", "", "Comma-separated list of files to check.")
checkFileSumList := flag.String("checkFileSumList", "", "Comma-separated list of expected checksums.") checkFileSumList := flag.String("checkFileSumList", "", "Comma-separated list of expected checksums.")
parseMultiValueFlag(&gitWhitelist, "whitelist", "") parseMultiValueFlag(&gitWhitelist, "whitelist", "")
parseMultiValueFlag(&metaFile, "meta", "") parseMultiValueFlag(&metaFile, "meta", "")
parseMultiValueFlag(&releaseTag, "releaseTag", "Recommended tags")
flag.Parse() flag.Parse()
if *showVersion { if *showVersion {
fmt.Println(Version) fmt.Println(Version)
@ -79,7 +80,7 @@ func main() {
if err != nil { if err != nil {
fmt.Printf("### Non-ASCII Characters Commit Message Check Failed:\n%s\n", err.Error()) fmt.Printf("### Non-ASCII Characters Commit Message Check Failed:\n%s\n", err.Error())
} }
err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseTag) err = healthcheck.CheckTags(*rootDir, *checkRelease, *releaseCategories, *releaseNumber)
if err != nil { if err != nil {
fmt.Printf("### Release Tag Check Failed:\n%s\n", err.Error()) fmt.Printf("### Release Tag Check Failed:\n%s\n", err.Error())
} }

View File

@ -13,11 +13,11 @@ type Match struct {
} }
type Conf struct { type Conf struct {
FullScore int FullScore int
MinScore int MinScore int
Files []string Files []string
ForceQuitOnMatch bool EndOnMatch bool
Matches []Match Matches []Match
} }
type Keyword struct{} type Keyword struct{}
@ -58,7 +58,7 @@ func (*Keyword) Run(results []stage.ExecutorResult, confAny any) (
forceQuit := false forceQuit := false
for _, result := range results { for _, result := range results {
tmp, matched := Parse(result, *conf) tmp, matched := Parse(result, *conf)
if matched && conf.ForceQuitOnMatch { if matched && conf.EndOnMatch {
forceQuit = true forceQuit = true
} }
res = append(res, tmp) res = append(res, tmp)

View File

@ -77,21 +77,33 @@ func checkConsist(tags []string, target string) (err error) {
} }
// INFO: check whether release tag follow the tag list we give // INFO: check whether release tag follow the tag list we give
func checkStyle(target string, recommendTag []string) (err error) { func checkStyle(tags []string, category string, n int) (err error) {
var prefix string
switch category {
case "exam":
prefix = "e"
case "project":
prefix = "p"
case "homework":
prefix = "h"
default:
prefix = "a"
}
target := prefix + fmt.Sprintf("%d", n)
found := false found := false
for _, tag := range recommendTag { for _, tag := range tags {
if tag == target { if tag == target {
found = true found = true
break break
} }
} }
if !found { if !found {
return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", target, strings.Join(recommendTag, "', '")) return fmt.Errorf("Wrong release tag '%s' or missing release tags. Please use one of '%s'.", strings.Join(tags, "', '"), target)
} }
return nil return nil
} }
func CheckTags(repoPath string, skip bool, recommendTag []string) error { func CheckTags(repoPath string, skip bool, category string, n int) error {
if skip { if skip {
return nil return nil
} }
@ -108,7 +120,7 @@ func CheckTags(repoPath string, skip bool, recommendTag []string) error {
if err != nil { if err != nil {
return err return err
} }
err = checkStyle(target, recommendTag) err = checkStyle(tags, category, n)
if err != nil { if err != nil {
return err return err
} }