Compare commits
No commits in common. "e7e24f7c8ff0dc2d0f9b2a6f21e595c3a4585264" and "a5767cf040c64c1c1e85f881a3aa9f92f01f94f8" have entirely different histories.
e7e24f7c8f
...
a5767cf040
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user