feat: cli arg to specify msg
This commit is contained in:
parent
7ce4d29d0e
commit
f665e5b2b1
|
@ -8,7 +8,6 @@ import (
|
|||
"regexp"
|
||||
|
||||
"focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/stage"
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/koding/multiconfig"
|
||||
)
|
||||
|
||||
|
@ -122,25 +121,11 @@ func parseConfFile(path string) (conf Conf, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func commitMsgToConf(metaConfPath string) (conf Conf, err error) {
|
||||
func msgToConf(metaConfPath string, msg string) (conf Conf, err error) {
|
||||
metaConf, err := parseMetaConfFile(metaConfPath)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
r, err := git.PlainOpen(".")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ref, err := r.Head()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
commit, err := r.CommitObject(ref.Hash())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
msg := commit.Message
|
||||
slog.Debug("commit msg to conf", "msg", msg)
|
||||
for _, pattern := range metaConf.Patterns {
|
||||
if matched, _ := regexp.MatchString(pattern.Regex, msg); matched {
|
||||
slog.Debug("pattern matched", "pattern", pattern)
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
_ "focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/parsers"
|
||||
"focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/stage"
|
||||
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
|
@ -22,6 +23,23 @@ func setupSlog(logLevel int) {
|
|||
slog.SetDefault(logger)
|
||||
}
|
||||
|
||||
func getCommitMsg() (msg string, err error) {
|
||||
r, err := git.PlainOpen(".")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ref, err := r.Head()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
commit, err := r.CommitObject(ref.Hash())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
msg = commit.Message
|
||||
return
|
||||
}
|
||||
|
||||
func generateStages(conf Conf) ([]stage.Stage, error) {
|
||||
stages := []stage.Stage{}
|
||||
for _, s := range conf.Stages {
|
||||
|
@ -71,20 +89,33 @@ func outputResult(outputPath string, results []stage.StageResult) error {
|
|||
append(content, []byte("\n")...), 0o600)
|
||||
}
|
||||
|
||||
var metaConfPath string
|
||||
var (
|
||||
metaConfPath string
|
||||
msg string
|
||||
)
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&metaConfPath, "meta-conf", "meta-conf.json", "meta config file path")
|
||||
flag.StringVar(&msg, "msg", "", "message to trigger the running, leave empty to use git commit message on HEAD")
|
||||
}
|
||||
|
||||
func mainImpl() error {
|
||||
setupSlog(int(slog.LevelInfo)) // before conf is loaded
|
||||
flag.Parse()
|
||||
conf, err := commitMsgToConf(metaConfPath)
|
||||
if msg == "" {
|
||||
var err error
|
||||
msg, err = getCommitMsg()
|
||||
if err != nil {
|
||||
slog.Error("get commit msg", "error", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
conf, err := msgToConf(metaConfPath, msg)
|
||||
if err != nil {
|
||||
slog.Error("no conf found", "error", err)
|
||||
return err
|
||||
}
|
||||
setupSlog(conf.LogLevel)
|
||||
setupSlog(conf.LogLevel) // after conf is loaded
|
||||
executors.InitWithConf(conf.SandboxExecServer, conf.SandboxToken)
|
||||
stages, err := generateStages(conf)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user