feat(conf): pre-stages and post-stages (#83)
This commit is contained in:
parent
0f339656aa
commit
454df2c6fc
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"`
|
||||
|
|
Loading…
Reference in New Issue
Block a user