- commit
- d60d7b4
- parent
- 9be7a5d
- author
- Eric Bower
- date
- 2024-07-18 20:57:32 -0400 EDT
chore: better error handling for cfg and db
M
cfg.go
+16,
-4
1@@ -3,6 +3,7 @@ package git
2 import (
3 "fmt"
4 "log/slog"
5+ "path/filepath"
6 "strings"
7 "time"
8
9@@ -37,13 +38,17 @@ type GitCfg struct {
10 }
11
12 func NewGitCfg(fpath string, logger *slog.Logger) *GitCfg {
13- logger.Info("loading configuration file", "fpath", fpath)
14+ fpp, err := filepath.Abs(fpath)
15+ if err != nil {
16+ panic(err)
17+ }
18+ logger.Info("loading configuration file", "fpath", fpp)
19
20- if err := k.Load(file.Provider(fpath), toml.Parser()); err != nil {
21+ if err := k.Load(file.Provider(fpp), toml.Parser()); err != nil {
22 panic(fmt.Sprintf("error loading config: %v", err))
23 }
24
25- err := k.Load(env.Provider("GITPR_", ".", func(s string) string {
26+ err = k.Load(env.Provider("GITPR_", ".", func(s string) string {
27 keyword := strings.ToLower(strings.TrimPrefix(s, "GITPR_"))
28 return keyword
29 }), nil)
30@@ -68,8 +73,15 @@ func NewGitCfg(fpath string, logger *slog.Logger) *GitCfg {
31 logger.Info("no admin specified in config so no one can submit a review!")
32 }
33
34+ // make datadir absolute
35+ tmpdir := out.DataDir
36 if out.DataDir == "" {
37- out.DataDir = "data"
38+ tmpdir = "./data"
39+ }
40+ datadir, err := filepath.Abs(tmpdir)
41+ out.DataDir = datadir
42+ if err != nil {
43+ panic(err)
44 }
45
46 if out.Host == "" {
M
db.go
+1,
-2
1@@ -187,12 +187,11 @@ CREATE TABLE IF NOT EXISTS event_logs (
2 var sqliteMigrations = []string{
3 "", // migration #0 is reserved for schema initialization
4 "ALTER TABLE patches ADD COLUMN base_commit_sha TEXT",
5- `
6- `,
7 }
8
9 // Open opens a database connection.
10 func Open(dsn string, logger *slog.Logger) (*DB, error) {
11+ logger.Info("opening db file", "dsn", dsn)
12 db, err := sqlx.Connect("sqlite", dsn)
13 if err != nil {
14 return nil, err
M
ssh.go
+3,
-2
1@@ -32,9 +32,10 @@ func authHandler(pr *PrCmd) func(ctx ssh.Context, key ssh.PublicKey) bool {
2 }
3
4 func GitSshServer(cfg *GitCfg) {
5- dbh, err := Open(filepath.Join(cfg.DataDir, "pr.db"), cfg.Logger)
6+ dbpath := filepath.Join(cfg.DataDir, "pr.db")
7+ dbh, err := Open(dbpath, cfg.Logger)
8 if err != nil {
9- panic(err)
10+ panic(fmt.Sprintf("cannot find database file, check folder and perms: %s", dbpath))
11 }
12
13 be := &Backend{
M
web.go
+3,
-3
1@@ -621,10 +621,10 @@ func chromaStyleHandler(w http.ResponseWriter, r *http.Request) {
2 func StartWebServer(cfg *GitCfg) {
3 addr := fmt.Sprintf("%s:%s", cfg.Host, cfg.WebPort)
4
5- dbh, err := Open(filepath.Join(cfg.DataDir, "pr.db"), cfg.Logger)
6+ dbpath := filepath.Join(cfg.DataDir, "pr.db")
7+ dbh, err := Open(dbpath, cfg.Logger)
8 if err != nil {
9- cfg.Logger.Error("could not open db", "err", err)
10- return
11+ panic(fmt.Sprintf("cannot find database file, check folder and perms: %s", dbpath))
12 }
13
14 be := &Backend{