feat(conf): pre-stages and post-stages (#83)
Some checks failed
build / build (push) Failing after 1s
build / trigger-build-image (push) Has been skipped
submodules sync / sync (push) Failing after 0s

This commit is contained in:
张泊明518370910136 2025-01-29 08:13:02 -05:00
parent 0f339656aa
commit 454df2c6fc
GPG Key ID: D47306D7062CDA9D
3 changed files with 45 additions and 6 deletions

View File

@ -15,10 +15,12 @@ import (
type StageResult stage.StageResult
func generateStages(conf *conf.Conf, groups []string) ([]stage.Stage, error) {
func generateStages(confStages []conf.ConfStage, groups []string) (
[]stage.Stage, error,
) {
stages := []stage.Stage{}
existNames := map[string]bool{}
for _, s := range conf.Stage.Stages {
for _, s := range confStages {
if s.Group != "" {
var ok bool
for _, group := range groups {
@ -137,18 +139,41 @@ func Run(conf *conf.Conf, groups []string) (
conf.Stage.SandboxExecServer,
conf.Stage.SandboxToken,
)
stages, err := generateStages(conf, groups)
preStages, err := generateStages(conf.Stage.PreStages, groups)
if err != nil {
slog.Error("generate preStages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return
}
stages, err := generateStages(conf.Stage.Stages, groups)
if err != nil {
slog.Error("generate stages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return
}
postStages, err := generateStages(conf.Stage.PostStages, groups)
if err != nil {
slog.Error("generate postStages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return
}
defer stage.Cleanup()
// ignore force quit in preStages & postStages
slog.Info("run preStages")
_, _, err = stage.Run(preStages)
if err != nil {
slog.Error("run preStages", "error", err)
}
slog.Info("run stages")
stageResults, forceQuitStageName, err = stage.Run(stages)
if err != nil {
slog.Error("run stages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return
}
slog.Info("run postStages")
_, _, err = stage.Run(postStages)
if err != nil {
slog.Error("run postStages", "error", err)
}
return
}

View File

@ -186,10 +186,22 @@ func MatchGroups(conf *Conf, conventionalCommit *ConventionalCommit) []string {
seen := make(map[string]bool)
keywords := []string{}
loweredCommitGroup := strings.ToLower(conventionalCommit.Group)
for i, stage := range conf.Stage.Stages {
if loweredCommitGroup == "all" {
if loweredCommitGroup == "all" {
for i := range conf.Stage.PreStages {
conf.Stage.PreStages[i].Group = ""
}
for i := range conf.Stage.Stages {
conf.Stage.Stages[i].Group = ""
}
for i := range conf.Stage.PostStages {
conf.Stage.PostStages[i].Group = ""
}
}
confStages := []ConfStage{}
confStages = append(confStages, conf.Stage.PreStages...)
confStages = append(confStages, conf.Stage.Stages...)
confStages = append(confStages, conf.Stage.PostStages...)
for _, stage := range confStages {
if stage.Group == "" {
continue
}

View File

@ -36,7 +36,9 @@ type Conf struct {
SandboxExecServer string `default:"localhost:5051"`
SandboxToken string `default:""`
OutputPath string `default:"joj3_result.json"`
PreStages []ConfStage
Stages []ConfStage
PostStages []ConfStage
}
Teapot struct {
LogPath string `default:"/home/tt/.cache/joint-teapot-debug.log"`