From d8ed5809cbc5a602696ac6f3ec17d0e8185d644e Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Tue, 1 Oct 2024 01:36:30 -0400 Subject: [PATCH] feat: limit meta conf loaders --- cmd/joj3/conf.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cmd/joj3/conf.go b/cmd/joj3/conf.go index 31dff4f..d51295f 100644 --- a/cmd/joj3/conf.go +++ b/cmd/joj3/conf.go @@ -6,6 +6,7 @@ import ( "log/slog" "os" "regexp" + "strings" "github.com/joint-online-judge/JOJ3/internal/stage" "github.com/koding/multiconfig" @@ -87,7 +88,18 @@ func parseMetaConfFile(path string) (metaConf MetaConf, err error) { }, nil } d := &multiconfig.DefaultLoader{} - d.Loader = multiconfig.NewWithPath(path) + loaders := []multiconfig.Loader{} + loaders = append(loaders, &multiconfig.TagLoader{}) + if strings.HasSuffix(path, "toml") { + loaders = append(loaders, &multiconfig.TOMLLoader{Path: path}) + } + if strings.HasSuffix(path, "json") { + loaders = append(loaders, &multiconfig.JSONLoader{Path: path}) + } + if strings.HasSuffix(path, "yml") || strings.HasSuffix(path, "yaml") { + loaders = append(loaders, &multiconfig.YAMLLoader{Path: path}) + } + d.Loader = multiconfig.MultiLoader(loaders...) d.Validator = multiconfig.MultiValidator(&multiconfig.RequiredValidator{}) if err = d.Load(&metaConf); err != nil { slog.Error("parse meta conf", "error", err)