chore: flatten nested conf fields
All checks were successful
submodules sync / sync (push) Successful in 44s
build / build (push) Successful in 1m54s
build / trigger-build-image (push) Successful in 11s

This commit is contained in:
张泊明518370910136 2025-09-27 01:01:17 -07:00
parent 9a109372f2
commit 7bd216efda
GPG Key ID: D47306D7062CDA9D
4 changed files with 61 additions and 26 deletions

View File

@ -183,20 +183,23 @@ func MatchGroups(conf *Conf, conventionalCommit *ConventionalCommit) []string {
keywords := []string{}
loweredCommitGroup := strings.ToLower(conventionalCommit.Group)
if loweredCommitGroup == "all" {
for i := range conf.Stage.PreStages {
conf.Stage.PreStages[i].Group = ""
for i := range conf.PreStages {
conf.PreStages[i].Group = ""
conf.PreStages[i].Groups = nil
}
for i := range conf.Stage.Stages {
conf.Stage.Stages[i].Group = ""
for i := range conf.Stages {
conf.Stages[i].Group = ""
conf.Stages[i].Groups = nil
}
for i := range conf.Stage.PostStages {
conf.Stage.PostStages[i].Group = ""
for i := range conf.PostStages {
conf.PostStages[i].Group = ""
conf.PostStages[i].Groups = nil
}
}
confStages := []ConfStage{}
confStages = append(confStages, conf.Stage.PreStages...)
confStages = append(confStages, conf.Stage.Stages...)
confStages = append(confStages, conf.Stage.PostStages...)
confStages = append(confStages, conf.PreStages...)
confStages = append(confStages, conf.Stages...)
confStages = append(confStages, conf.PostStages...)
for _, stage := range confStages {
if stage.Group != "" {
keyword := strings.ToLower(stage.Group)

View File

@ -22,14 +22,21 @@ type ConfStage struct {
}
type Conf struct {
Name string `default:"unknown"`
LogPath string `default:""`
ActorCsvPath string `default:""`
MaxTotalScore int `default:"-1"`
Stage struct {
SandboxExecServer string `default:"localhost:5051"`
SandboxToken string `default:""`
OutputPath string `default:"joj3_result.json"`
Name string `default:"unknown"`
LogPath string `default:""`
ActorCsvPath string `default:""`
MaxTotalScore int `default:"-1"`
SandboxExecServer string `default:"localhost:5051"`
SandboxToken string `default:""`
OutputPath string `default:"joj3_result.json"`
PreStages []ConfStage
Stages []ConfStage
PostStages []ConfStage
// TODO: remove this nested struct
Stage struct {
SandboxExecServer string
SandboxToken string
OutputPath string
PreStages []ConfStage
Stages []ConfStage
PostStages []ConfStage

View File

@ -53,7 +53,7 @@ func getConf(commitMsg string) (*joj3Conf.Conf, *joj3Conf.ConventionalCommit, er
return nil, nil, err
}
env.SetConfName(conf.Name)
env.SetOutputPath(conf.Stage.OutputPath)
env.SetOutputPath(conf.OutputPath)
if err := showConfStat(confPath, confStat); err != nil {
return nil, nil, err
}
@ -78,6 +78,31 @@ func loadConf(confPath string) (*joj3Conf.Conf, error) {
slog.Error("parse conf", "error", err)
return nil, err
}
// TODO: remove this compatible code for nested struct
if conf.Stage.SandboxExecServer != "" {
conf.SandboxExecServer = conf.Stage.SandboxExecServer
conf.Stage.SandboxExecServer = ""
}
if conf.Stage.SandboxToken != "" {
conf.SandboxToken = conf.Stage.SandboxToken
conf.Stage.SandboxToken = ""
}
if conf.Stage.OutputPath != "" {
conf.OutputPath = conf.Stage.OutputPath
conf.Stage.OutputPath = ""
}
if len(conf.Stage.PreStages) > 0 {
conf.PreStages = conf.Stage.PreStages
conf.Stage.PreStages = nil
}
if len(conf.Stage.Stages) > 0 {
conf.Stages = conf.Stage.Stages
conf.Stage.Stages = nil
}
if len(conf.Stage.PostStages) > 0 {
conf.PostStages = conf.Stage.PostStages
conf.Stage.PostStages = nil
}
slog.Debug("conf loaded", "conf", conf, "joj3 version", Version)
return conf, nil
}

View File

@ -137,22 +137,22 @@ func runStages(
stageResults []stage.StageResult, forceQuitStageName string, err error,
) {
executor.InitWithConf(
conf.Stage.SandboxExecServer,
conf.Stage.SandboxToken,
conf.SandboxExecServer,
conf.SandboxToken,
)
preStages, err := generateStages(conf.Stage.PreStages, groups)
preStages, err := generateStages(conf.PreStages, groups)
if err != nil {
slog.Error("generate preStages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return stageResults, forceQuitStageName, err
}
stages, err := generateStages(conf.Stage.Stages, groups)
stages, err := generateStages(conf.Stages, groups)
if err != nil {
slog.Error("generate stages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
return stageResults, forceQuitStageName, err
}
postStages, err := generateStages(conf.Stage.PostStages, groups)
postStages, err := generateStages(conf.PostStages, groups)
if err != nil {
slog.Error("generate postStages", "error", err)
stageResults, forceQuitStageName = newErrorStageResults(err)
@ -172,14 +172,14 @@ func runStages(
stageResults, forceQuitStageName = newErrorStageResults(err)
}
onStagesComplete(stageResults, forceQuitStageName)
slog.Info("output result start", "path", conf.Stage.OutputPath)
slog.Info("output result start", "path", conf.OutputPath)
slog.Debug("output result start",
"path", conf.Stage.OutputPath, "results", stageResults)
"path", conf.OutputPath, "results", stageResults)
content, err := json.Marshal(stageResults)
if err != nil {
slog.Error("marshal stageResults", "error", err)
}
err = os.WriteFile(conf.Stage.OutputPath,
err = os.WriteFile(conf.OutputPath,
append(content, []byte("\n")...), 0o600)
if err != nil {
slog.Error("write stageResults", "error", err)