Hi… I am well aware that this diff view is very suboptimal. It will be fixed when the refactored server comes along!
Lint config
package config import ( "bufio"
"fmt"
"log/slog"
"os"
"go.lindenii.runxiyu.org/forge/forged/internal/common/scfg"
"go.lindenii.runxiyu.org/forge/forged/internal/database"
"go.lindenii.runxiyu.org/forge/forged/internal/incoming/hooks"
"go.lindenii.runxiyu.org/forge/forged/internal/incoming/lmtp"
"go.lindenii.runxiyu.org/forge/forged/internal/incoming/ssh"
"go.lindenii.runxiyu.org/forge/forged/internal/incoming/web"
"go.lindenii.runxiyu.org/forge/forged/internal/ipc/irc"
)
type Config struct {
DB database.Config `scfg:"db"`
Web web.Config `scfg:"web"`
Hooks hooks.Config `scfg:"hooks"`
LMTP lmtp.Config `scfg:"lmtp"`
SSH ssh.Config `scfg:"ssh"`
IRC irc.Config `scfg:"irc"`
Git struct {
RepoDir string `scfg:"repo_dir"`
Socket string `scfg:"socket"`
DaemonPath string `scfg:"daemon_path"`
} `scfg:"git"`
General struct {
Title string `scfg:"title"`
} `scfg:"general"`
Pprof struct {
Net string `scfg:"net"`
Addr string `scfg:"addr"`
} `scfg:"pprof"`
}
func Open(path string) (config Config, err error) {
var configFile *os.File
if configFile, err = os.Open(path); err != nil {
configFile, err = os.Open(path) //#nosec G304
if err != nil {
err = fmt.Errorf("open config file: %w", err)
return config, err }
defer configFile.Close()
defer func() {
_ = configFile.Close()
}()
decoder := scfg.NewDecoder(bufio.NewReader(configFile))
if err = decoder.Decode(&config); err != nil {
err = decoder.Decode(&config)
if err != nil {
err = fmt.Errorf("decode config file: %w", err)
return config, err
}
for _, u := range decoder.UnknownDirectives() {
slog.Warn("unknown configuration directive", "directive", u)
}
return config, err
}