diff --git a/cmd/joj3/conf/conf.go b/cmd/joj3/conf/conf.go index bd1d23c..e369d7b 100644 --- a/cmd/joj3/conf/conf.go +++ b/cmd/joj3/conf/conf.go @@ -282,14 +282,16 @@ func hintValidScopes(confRoot, confName string) { "valid scopes", validScopes) } -func GetConfPath(confRoot, confName, msg, tag string) ( +func GetConfPath(confRoot, confName, fallbackConfName, 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)) + confPath = filepath.Clean( + fmt.Sprintf("%s/%s", confRoot, fallbackConfName)) + slog.Info("fallback to conf", "path", confPath) } confStat, err = os.Stat(confPath) if err != nil { @@ -298,7 +300,9 @@ func GetConfPath(confRoot, confName, msg, tag string) ( } 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)) + confPath = filepath.Clean( + fmt.Sprintf("%s/%s", confRoot, fallbackConfName)) + slog.Info("fallback to conf", "path", confPath) confStat, err = os.Stat(confPath) if err != nil { slog.Error("stat fallback conf", "error", err) diff --git a/cmd/joj3/main.go b/cmd/joj3/main.go index 756c2c4..51f4174 100644 --- a/cmd/joj3/main.go +++ b/cmd/joj3/main.go @@ -12,17 +12,19 @@ import ( ) var ( - confRoot string - confName string - tag string - msg string - showVersion *bool - Version string = "debug" + confRoot string + confName string + fallbackConfName string + tag string + msg string + showVersion *bool + Version string = "debug" ) func init() { flag.StringVar(&confRoot, "conf-root", ".", "root path for all config files") flag.StringVar(&confName, "conf-name", "conf.json", "filename for config files") + flag.StringVar(&fallbackConfName, "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") // TODO: remove this flag flag.StringVar(&msg, "msg", "", "[DEPRECATED] will be ignored") @@ -39,6 +41,9 @@ func mainImpl() error { fmt.Println(Version) return nil } + if fallbackConfName == "" { + fallbackConfName = confName + } slog.Info("start joj3", "version", Version) msg, err := conf.GetCommitMsg() if err != nil { @@ -46,7 +51,7 @@ func mainImpl() error { return err } confPath, group, confStat, err := conf.GetConfPath( - confRoot, confName, msg, tag) + confRoot, confName, fallbackConfName, msg, tag) if err != nil { slog.Error("get conf path", "error", err) return err