From 4e84031e8450f2340aa70077aa0c06582af99f71 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Sat, 1 Feb 2025 20:08:15 -0500 Subject: [PATCH] feat(cmd/joj3): store output path to env var [force build] --- cmd/joj3/env/env.go | 3 +++ cmd/joj3/main.go | 33 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/cmd/joj3/env/env.go b/cmd/joj3/env/env.go index d9f6061..8d9a01e 100644 --- a/cmd/joj3/env/env.go +++ b/cmd/joj3/env/env.go @@ -12,6 +12,7 @@ const ( RunID = "JOJ3_RUN_ID" CommitMsg = "JOJ3_COMMIT_MSG" ForceQuitStageName = "JOJ3_FORCE_QUIT_STAGE_NAME" + OutputPath = "JOJ3_OUTPUT_PATH" ) type Attribute struct { @@ -28,6 +29,7 @@ type Attribute struct { ActorName string ActorID string ForceQuitStageName string + OutputPath string } var Attr Attribute @@ -57,4 +59,5 @@ func Set() { os.Setenv(RunID, Attr.RunID) os.Setenv(CommitMsg, Attr.CommitMsg) os.Setenv(ForceQuitStageName, Attr.ForceQuitStageName) + os.Setenv(OutputPath, Attr.OutputPath) } diff --git a/cmd/joj3/main.go b/cmd/joj3/main.go index 1c0bb7b..d8a3a7d 100644 --- a/cmd/joj3/main.go +++ b/cmd/joj3/main.go @@ -9,7 +9,7 @@ import ( "github.com/joint-online-judge/JOJ3/cmd/joj3/env" "github.com/joint-online-judge/JOJ3/cmd/joj3/stage" - "github.com/joint-online-judge/JOJ3/internal/conf" + internalConf "github.com/joint-online-judge/JOJ3/internal/conf" internalStage "github.com/joint-online-judge/JOJ3/internal/stage" ) @@ -18,7 +18,7 @@ var ( confFileName string fallbackConfFileName string tag string - showVersion *bool + printVersion *bool Version string = "debug" ) @@ -27,18 +27,18 @@ func init() { flag.StringVar(&confFileName, "conf-name", "conf.json", "filename for config files") flag.StringVar(&fallbackConfFileName, "fallback-conf-name", "", "filename for the fallback config file in conf-root, leave empty to use conf-name") flag.StringVar(&tag, "tag", "", "tag to trigger the running, when non-empty, should equal to the scope in msg") - showVersion = flag.Bool("version", false, "print current version") + printVersion = flag.Bool("version", false, "print current version") } func mainImpl() (err error) { - confObj := new(conf.Conf) + conf := new(internalConf.Conf) logger := slog.New(slog.NewTextHandler(os.Stderr, nil)) slog.SetDefault(logger) // parse flag & conf file flag.Parse() - if *showVersion { + if *printVersion { fmt.Println(Version) return nil } @@ -46,49 +46,50 @@ func mainImpl() (err error) { fallbackConfFileName = confFileName } slog.Info("start joj3", "version", Version) - commitMsg, err := conf.GetCommitMsg() + commitMsg, err := internalConf.GetCommitMsg() if err != nil { slog.Error("get commit msg", "error", err) return err } env.Attr.CommitMsg = commitMsg - confPath, confStat, conventionalCommit, err := conf.GetConfPath( + confPath, confStat, conventionalCommit, err := internalConf.GetConfPath( confFileRoot, confFileName, fallbackConfFileName, commitMsg, tag) if err != nil { slog.Error("get conf path", "error", err) return err } slog.Info("try to load conf", "path", confPath) - confObj, err = conf.ParseConfFile(confPath) + conf, err = internalConf.ParseConfFile(confPath) if err != nil { slog.Error("parse conf", "error", err) return err } - env.Attr.ConfName = confObj.Name - slog.Debug("conf loaded", "conf", confObj, "joj3 version", Version) - if err := setupSlog(confObj); err != nil { + env.Attr.ConfName = conf.Name + env.Attr.OutputPath = conf.Stage.OutputPath + slog.Debug("conf loaded", "conf", conf, "joj3 version", Version) + if err := setupSlog(conf); err != nil { slog.Error("setup slog", "error", err) return err } // log conf file info - sha256, err := conf.GetSHA256(confPath) + confSHA256, err := internalConf.GetSHA256(confPath) if err != nil { slog.Error("get sha256", "error", err) return err } - slog.Info("conf info", "sha256", sha256, "modTime", confStat.ModTime(), + slog.Info("conf info", "sha256", confSHA256, "modTime", confStat.ModTime(), "size", confStat.Size()) - if err := conf.CheckExpire(confObj); err != nil { + if err := internalConf.CheckExpire(conf); err != nil { slog.Error("conf check expire", "error", err) return err } // run stages - groups := conf.MatchGroups(confObj, conventionalCommit) + groups := internalConf.MatchGroups(conf, conventionalCommit) env.Attr.Groups = strings.Join(groups, ",") _, forceQuitStageName, err := stage.Run( - confObj, + conf, groups, func( stageResults []internalStage.StageResult,