feat(cmd/joj3): fallback to conf in conf-root on parse msg error
This commit is contained in:
parent
0a28347247
commit
896c4ac220
|
@ -5,6 +5,7 @@ import (
|
|||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -215,7 +216,9 @@ func GetSHA256(filePath string) (string, error) {
|
|||
return hex.EncodeToString(hash.Sum(nil)), nil
|
||||
}
|
||||
|
||||
func ParseMsg(confRoot, confName, msg, tag string) (confPath, group string, err error) {
|
||||
func parseMsg(confRoot, confName, msg, tag string) (
|
||||
confPath, group string, err error,
|
||||
) {
|
||||
slog.Info("parse msg", "msg", msg)
|
||||
conventionalCommit, err := parseConventionalCommit(msg)
|
||||
if err != nil {
|
||||
|
@ -249,7 +252,7 @@ func ParseMsg(confRoot, confName, msg, tag string) (confPath, group string, err
|
|||
return
|
||||
}
|
||||
|
||||
func HintValidScopes(confRoot, confName string) {
|
||||
func hintValidScopes(confRoot, confName string) {
|
||||
confRoot = filepath.Clean(confRoot)
|
||||
validScopes := []string{}
|
||||
_ = filepath.Walk(confRoot, func(
|
||||
|
@ -279,6 +282,32 @@ func HintValidScopes(confRoot, confName string) {
|
|||
"valid scopes", validScopes)
|
||||
}
|
||||
|
||||
func GetConfPath(confRoot, confName, msg, tag string) (
|
||||
confPath, group string, confStat fs.FileInfo, err error,
|
||||
) {
|
||||
confPath, group, err = parseMsg(confRoot, confName, msg, tag)
|
||||
if err != nil {
|
||||
slog.Error("parse msg", "error", err)
|
||||
// fallback to conf file in conf root on parse error
|
||||
confPath = filepath.Clean(fmt.Sprintf("%s/%s", confRoot, confName))
|
||||
}
|
||||
confStat, err = os.Stat(confPath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
hintValidScopes(confRoot, confName)
|
||||
}
|
||||
slog.Error("stat conf", "error", err)
|
||||
// fallback to conf file in conf root on conf not exist
|
||||
confPath = filepath.Clean(fmt.Sprintf("%s/%s", confRoot, confName))
|
||||
confStat, err = os.Stat(confPath)
|
||||
if err != nil {
|
||||
slog.Error("stat fallback conf", "error", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CheckExpire(conf *Conf) error {
|
||||
if conf.ExpireUnixTimestamp > 0 &&
|
||||
conf.ExpireUnixTimestamp < time.Now().Unix() {
|
||||
|
|
|
@ -45,26 +45,13 @@ func mainImpl() error {
|
|||
slog.Error("get commit msg", "error", err)
|
||||
return err
|
||||
}
|
||||
confPath, group, err := conf.ParseMsg(confRoot, confName, msg, tag)
|
||||
confPath, group, confStat, err := conf.GetConfPath(
|
||||
confRoot, confName, msg, tag)
|
||||
if err != nil {
|
||||
slog.Error("parse msg", "error", err)
|
||||
conf.HintValidScopes(confRoot, confName)
|
||||
slog.Error("get conf path", "error", err)
|
||||
return err
|
||||
}
|
||||
slog.Info("try to load conf", "path", confPath)
|
||||
confStat, err := os.Stat(confPath)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
conf.HintValidScopes(confRoot, confName)
|
||||
}
|
||||
slog.Error("stat conf", "error", err)
|
||||
return err
|
||||
}
|
||||
sha256, err := conf.GetSHA256(confPath)
|
||||
if err != nil {
|
||||
slog.Error("get sha256", "error", err)
|
||||
return err
|
||||
}
|
||||
confObj, err := conf.ParseConfFile(confPath)
|
||||
if err != nil {
|
||||
slog.Error("parse conf", "error", err)
|
||||
|
@ -75,6 +62,11 @@ func mainImpl() error {
|
|||
slog.Error("setup slog", "error", err)
|
||||
return err
|
||||
}
|
||||
sha256, err := conf.GetSHA256(confPath)
|
||||
if err != nil {
|
||||
slog.Error("get sha256", "error", err)
|
||||
return err
|
||||
}
|
||||
slog.Info("conf info", "sha256", sha256, "modTime", confStat.ModTime(),
|
||||
"size", confStat.Size())
|
||||
if err := conf.CheckExpire(confObj); err != nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user