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
|
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{}
|
stages := []stage.Stage{}
|
||||||
existNames := map[string]bool{}
|
existNames := map[string]bool{}
|
||||||
for _, s := range conf.Stage.Stages {
|
for _, s := range confStages {
|
||||||
if s.Group != "" {
|
if s.Group != "" {
|
||||||
var ok bool
|
var ok bool
|
||||||
for _, group := range groups {
|
for _, group := range groups {
|
||||||
|
@ -137,18 +139,41 @@ func Run(conf *conf.Conf, groups []string) (
|
||||||
conf.Stage.SandboxExecServer,
|
conf.Stage.SandboxExecServer,
|
||||||
conf.Stage.SandboxToken,
|
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 {
|
if err != nil {
|
||||||
slog.Error("generate stages", "error", err)
|
slog.Error("generate stages", "error", err)
|
||||||
stageResults, forceQuitStageName = newErrorStageResults(err)
|
stageResults, forceQuitStageName = newErrorStageResults(err)
|
||||||
return
|
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()
|
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)
|
stageResults, forceQuitStageName, err = stage.Run(stages)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("run stages", "error", err)
|
slog.Error("run stages", "error", err)
|
||||||
stageResults, forceQuitStageName = newErrorStageResults(err)
|
stageResults, forceQuitStageName = newErrorStageResults(err)
|
||||||
return
|
}
|
||||||
|
slog.Info("run postStages")
|
||||||
|
_, _, err = stage.Run(postStages)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("run postStages", "error", err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,10 +186,22 @@ func MatchGroups(conf *Conf, conventionalCommit *ConventionalCommit) []string {
|
||||||
seen := make(map[string]bool)
|
seen := make(map[string]bool)
|
||||||
keywords := []string{}
|
keywords := []string{}
|
||||||
loweredCommitGroup := strings.ToLower(conventionalCommit.Group)
|
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 = ""
|
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 == "" {
|
if stage.Group == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,9 @@ type Conf struct {
|
||||||
SandboxExecServer string `default:"localhost:5051"`
|
SandboxExecServer string `default:"localhost:5051"`
|
||||||
SandboxToken string `default:""`
|
SandboxToken string `default:""`
|
||||||
OutputPath string `default:"joj3_result.json"`
|
OutputPath string `default:"joj3_result.json"`
|
||||||
|
PreStages []ConfStage
|
||||||
Stages []ConfStage
|
Stages []ConfStage
|
||||||
|
PostStages []ConfStage
|
||||||
}
|
}
|
||||||
Teapot struct {
|
Teapot struct {
|
||||||
LogPath string `default:"/home/tt/.cache/joint-teapot-debug.log"`
|
LogPath string `default:"/home/tt/.cache/joint-teapot-debug.log"`
|
||||||
|
|
Loading…
Reference in New Issue
Block a user