feat: repo health check (#16) #17
|
@ -4,6 +4,7 @@ import (
|
|||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/pkg/healthcheck"
|
||||
|
@ -28,6 +29,13 @@ func (m *multiStringValue) String() string {
|
|||
return fmt.Sprintf("%v", *m)
|
||||
}
|
||||
|
||||
func setupSlog() {
|
||||
opts := &slog.HandlerOptions{}
|
||||
handler := slog.NewTextHandler(os.Stderr, opts)
|
||||
logger := slog.New(handler)
|
||||
slog.SetDefault(logger)
|
||||
}
|
||||
|
||||
// Generally, err is used for runtime errors, and checkRes is used for the result of the checks.
|
||||
func main() {
|
||||
var info []healthcheck.CheckStage
|
||||
|
@ -45,7 +53,7 @@ func main() {
|
|||
parseMultiValueFlag(&metaFile, "meta", "")
|
||||
parseMultiValueFlag(&releaseTags, "releaseTags", "")
|
||||
flag.Parse()
|
||||
|
||||
setupSlog()
|
||||
tmp = healthcheck.RepoSize()
|
||||
info = append(info, tmp)
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
package healthcheck
|
||||
|
||||
import (
|
||||
// "encoding/json"
|
||||
"fmt"
|
||||
|
||||
"focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/stage"
|
||||
// "focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/pkg/healthcheck"
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package healthcheck
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
|
@ -27,7 +27,7 @@ func NonAsciiMsg(root string) (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error openning git repo%w", err)
|
||||
slog.Error("openning git repo", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
@ -35,14 +35,14 @@ func NonAsciiMsg(root string) (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error getting reference%w", err)
|
||||
slog.Error("getting reference", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
commits, err := repo.Log(&git.LogOptions{From: ref.Hash()})
|
||||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error getting commits%w", err)
|
||||
slog.Error("getting commits", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ func NonAsciiMsg(root string) (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error converting log to string%w", err)
|
||||
slog.Error("converting log to string", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package healthcheck
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
@ -67,7 +68,7 @@ func ForbiddenCheck(rootDir string, regexList []string, repo string, droneBranch
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = err
|
||||
slog.Error("get forbiddens", "error", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package healthcheck
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
)
|
||||
|
||||
|
@ -70,7 +71,7 @@ func MetaCheck(rootDir string, fileList []string) (jsonOut CheckStage) {
|
|||
|
||||
if err != nil {
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = err
|
||||
slog.Error("get metas", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package healthcheck
|
|||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
@ -71,7 +72,7 @@ func NonAsciiFiles(root string) (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = err
|
||||
slog.Error("get non-ascii", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package healthcheck
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -24,7 +24,7 @@ func RepoSize() (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error running git command:%w", err)
|
||||
slog.Error("running git command:", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ func RepoSize() (jsonOut CheckStage) {
|
|||
if err != nil {
|
||||
jsonOut.StdOut += "Failed"
|
||||
jsonOut.ExitCode = 1
|
||||
jsonOut.ErrorLog = fmt.Errorf("Error running git command:%w", err)
|
||||
slog.Error("running git command:", "err", err)
|
||||
return jsonOut
|
||||
}
|
||||
sum += size
|
||||
|
|
|
@ -8,11 +8,10 @@ import (
|
|||
// For ExitCode, see https://focs.ji.sjtu.edu.cn/git/TAs/resources/src/branch/drone/dronelib.checks
|
||||
// 1 for unrecoverable error and 0 for succeses
|
||||
type CheckStage struct {
|
||||
Name string `json:"name of check"`
|
||||
Name string `json:"name"`
|
||||
StdOut string `json:"stdout"`
|
||||
ExitCode int `json:"exit code"`
|
||||
StdErr string `json:"stderr"`
|
||||
ErrorLog error `json:"errorLog"`
|
||||
}
|
||||
|
||||
// addExt appends the specified extension to each file name in the given fileList.
|
||||
|
|
Loading…
Reference in New Issue
Block a user