diff --git a/cmd/joj3/conf/conf.go b/cmd/joj3/conf/conf.go index b038cda..5d3478c 100644 --- a/cmd/joj3/conf/conf.go +++ b/cmd/joj3/conf/conf.go @@ -36,13 +36,14 @@ type Conf struct { } } } - // TODO: allow skip scoreboard/failed table/issue Teapot struct { - Skip bool `default:"true"` LogPath string `default:"/home/tt/.cache/joint-teapot-debug.log"` ScoreboardPath string `default:"scoreboard.csv"` FailedTablePath string `default:"failed-table.md"` GradingRepoName string `default:""` + SkipIssue bool `default:"false"` + SkipScoreboard bool `default:"false"` + SkipFailedTable bool `default:"false"` } } diff --git a/cmd/joj3/teapot/main.go b/cmd/joj3/teapot/main.go index a88d872..3fb6003 100644 --- a/cmd/joj3/teapot/main.go +++ b/cmd/joj3/teapot/main.go @@ -12,12 +12,16 @@ import ( ) func Run(conf conf.Conf) error { - if conf.Teapot.Skip { + actions := os.Getenv("GITHUB_ACTIONS") + if actions != "true" { + slog.Info("teapot exit", "GITHUB_ACTIONS", actions) return nil } os.Setenv("LOG_FILE_PATH", conf.Teapot.LogPath) os.Setenv("_TYPER_STANDARD_TRACEBACK", "1") envFilePath := "/home/tt/.config/teapot/teapot.env" + // TODO: pass sha to joint-teapot + // sha := os.Getenv("GITHUB_SHA") actor := os.Getenv("GITHUB_ACTOR") repository := os.Getenv("GITHUB_REPOSITORY") runNumber := os.Getenv("GITHUB_RUN_NUMBER") @@ -29,49 +33,55 @@ func Run(conf conf.Conf) error { repoParts := strings.Split(repository, "/") repoName := repoParts[1] re := regexp.MustCompile(`\x1b\[[0-9;]*[a-zA-Z]`) - cmd := exec.Command("joint-teapot", "joj3-scoreboard", - envFilePath, conf.Stage.OutputPath, actor, conf.Teapot.GradingRepoName, - repoName, runNumber, conf.Teapot.ScoreboardPath, conf.Name) // #nosec G204 - outputBytes, err := cmd.CombinedOutput() - output := re.ReplaceAllString(string(outputBytes), "") - for _, line := range strings.Split(output, "\n") { - if line == "" { - continue + if !conf.Teapot.SkipScoreboard { + cmd := exec.Command("joint-teapot", "joj3-scoreboard", + envFilePath, conf.Stage.OutputPath, actor, conf.Teapot.GradingRepoName, + repoName, runNumber, conf.Teapot.ScoreboardPath, conf.Name) // #nosec G204 + outputBytes, err := cmd.CombinedOutput() + output := re.ReplaceAllString(string(outputBytes), "") + for _, line := range strings.Split(output, "\n") { + if line == "" { + continue + } + slog.Info("joint-teapot joj3-scoreboard", "output", line) } - slog.Info("joint-teapot joj3-scoreboard", "output", line) - } - if err != nil { - slog.Error("joint-teapot joj3-scoreboard", "err", err) - return err - } - cmd = exec.Command("joint-teapot", "joj3-failed-table", - envFilePath, conf.Stage.OutputPath, actor, conf.Teapot.GradingRepoName, - repoName, runNumber, conf.Teapot.FailedTablePath, conf.Name) // #nosec G204 - outputBytes, err = cmd.CombinedOutput() - output = re.ReplaceAllString(string(outputBytes), "") - for _, line := range strings.Split(output, "\n") { - if line == "" { - continue + if err != nil { + slog.Error("joint-teapot joj3-scoreboard", "err", err) + return err } - slog.Info("joint-teapot joj3-failed-table", "output", line) } - if err != nil { - slog.Error("joint-teapot joj3-failed-table", "err", err) - return err - } - cmd = exec.Command("joint-teapot", "joj3-create-result-issue", - envFilePath, conf.Stage.OutputPath, repoName, runNumber, conf.Name) // #nosec G204 - outputBytes, err = cmd.CombinedOutput() - output = re.ReplaceAllString(string(outputBytes), "") - for _, line := range strings.Split(output, "\n") { - if line == "" { - continue + if !conf.Teapot.SkipFailedTable { + cmd := exec.Command("joint-teapot", "joj3-failed-table", + envFilePath, conf.Stage.OutputPath, actor, conf.Teapot.GradingRepoName, + repoName, runNumber, conf.Teapot.FailedTablePath, conf.Name) // #nosec G204 + outputBytes, err := cmd.CombinedOutput() + output := re.ReplaceAllString(string(outputBytes), "") + for _, line := range strings.Split(output, "\n") { + if line == "" { + continue + } + slog.Info("joint-teapot joj3-failed-table", "output", line) + } + if err != nil { + slog.Error("joint-teapot joj3-failed-table", "err", err) + return err } - slog.Info("joint-teapot joj3-create-result-issue", "output", line) } - if err != nil { - slog.Error("joint-teapot joj3-create-result-issue", "err", err) - return err + if !conf.Teapot.SkipIssue { + cmd := exec.Command("joint-teapot", "joj3-create-result-issue", + envFilePath, conf.Stage.OutputPath, repoName, runNumber, conf.Name) // #nosec G204 + outputBytes, err := cmd.CombinedOutput() + output := re.ReplaceAllString(string(outputBytes), "") + for _, line := range strings.Split(output, "\n") { + if line == "" { + continue + } + slog.Info("joint-teapot joj3-create-result-issue", "output", line) + } + if err != nil { + slog.Error("joint-teapot joj3-create-result-issue", "err", err) + return err + } } return nil }