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