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{} keywords := []string{}
loweredCommitGroup := strings.ToLower(conventionalCommit.Group) loweredCommitGroup := strings.ToLower(conventionalCommit.Group)
if loweredCommitGroup == "all" { if loweredCommitGroup == "all" {
for i := range conf.Stage.PreStages { for i := range conf.PreStages {
conf.Stage.PreStages[i].Group = "" conf.PreStages[i].Group = ""
conf.PreStages[i].Groups = nil
} }
for i := range conf.Stage.Stages { for i := range conf.Stages {
conf.Stage.Stages[i].Group = "" conf.Stages[i].Group = ""
conf.Stages[i].Groups = nil
} }
for i := range conf.Stage.PostStages { for i := range conf.PostStages {
conf.Stage.PostStages[i].Group = "" conf.PostStages[i].Group = ""
conf.PostStages[i].Groups = nil
} }
} }
confStages := []ConfStage{} confStages := []ConfStage{}
confStages = append(confStages, conf.Stage.PreStages...) confStages = append(confStages, conf.PreStages...)
confStages = append(confStages, conf.Stage.Stages...) confStages = append(confStages, conf.Stages...)
confStages = append(confStages, conf.Stage.PostStages...) confStages = append(confStages, conf.PostStages...)
for _, stage := range confStages { for _, stage := range confStages {
if stage.Group != "" { if stage.Group != "" {
keyword := strings.ToLower(stage.Group) keyword := strings.ToLower(stage.Group)

View File

@ -22,14 +22,21 @@ type ConfStage struct {
} }
type Conf struct { type Conf struct {
Name string `default:"unknown"` Name string `default:"unknown"`
LogPath string `default:""` LogPath string `default:""`
ActorCsvPath string `default:""` ActorCsvPath string `default:""`
MaxTotalScore int `default:"-1"` MaxTotalScore int `default:"-1"`
Stage 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
PostStages []ConfStage
// TODO: remove this nested struct
Stage struct {
SandboxExecServer string
SandboxToken string
OutputPath string
PreStages []ConfStage PreStages []ConfStage
Stages []ConfStage Stages []ConfStage
PostStages []ConfStage PostStages []ConfStage

View File

@ -53,7 +53,7 @@ func getConf(commitMsg string) (*joj3Conf.Conf, *joj3Conf.ConventionalCommit, er
return nil, nil, err return nil, nil, err
} }
env.SetConfName(conf.Name) env.SetConfName(conf.Name)
env.SetOutputPath(conf.Stage.OutputPath) env.SetOutputPath(conf.OutputPath)
if err := showConfStat(confPath, confStat); err != nil { if err := showConfStat(confPath, confStat); err != nil {
return nil, nil, err return nil, nil, err
} }
@ -78,6 +78,31 @@ func loadConf(confPath string) (*joj3Conf.Conf, error) {
slog.Error("parse conf", "error", err) slog.Error("parse conf", "error", err)
return nil, 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) slog.Debug("conf loaded", "conf", conf, "joj3 version", Version)
return conf, nil return conf, nil
} }

View File

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