Some further clean up of main and setup

This commit is contained in:
Melon 2025-01-29 22:48:40 +00:00
parent bb7c4bcedc
commit 4105d14e63
Signed by: melon
GPG Key ID: 6C9D970C50D26A25
3 changed files with 28 additions and 17 deletions

View File

@ -27,12 +27,14 @@ func main() {
logger.Logger.Info("Starting...") logger.Logger.Info("Starting...")
if configPath == "" { if configPath == "" {
logger.Logger.Fatal("Config flag is missing") logger.Logger.Error("Config flag is missing")
trySetup(configPath)
return
} }
wd, err := getWD(configPath) wd, err := getWD(configPath)
if err != nil { if err != nil {
logger.Logger.Fatal("Failed to find config directory: ", "err", err) logger.Logger.Fatal("Failed to find config directory", "err", err)
} }
// try to open the config file // try to open the config file
@ -41,19 +43,11 @@ func main() {
case err == nil: case err == nil:
break break
case os.IsNotExist(err): case os.IsNotExist(err):
// handle potential errors during setup logger.Logger.Warn("Failed to open config file", "err", err)
err = trySetup(wd) trySetup(wd)
switch { return
case errors.Is(err, errExitSetup):
// exit setup without questions
return
case err == nil:
return
default:
logger.Logger.Fatal("Failed to run setup", "err", err)
}
default: default:
logger.Logger.Fatal("Open config file: ", "err", err) logger.Logger.Fatal("Open config file", "err", err)
} }
// config file opened with no errors // config file opened with no errors
@ -63,7 +57,7 @@ func main() {
var config startUpConfig var config startUpConfig
err = yaml.NewDecoder(openConf).Decode(&config) err = yaml.NewDecoder(openConf).Decode(&config)
if err != nil { if err != nil {
logger.Logger.Fatal("Invalid config file: ", "err", err) logger.Logger.Fatal("Invalid config file", "err", err)
} }
runDaemon(wd, config) runDaemon(wd, config)
@ -115,3 +109,17 @@ func getWD(configPath string) (string, error) {
} }
return filepath.Dir(wdAbs), nil return filepath.Dir(wdAbs), nil
} }
func trySetup(wd string) {
// handle potential errors during setup
err := runSetup(wd)
switch {
case errors.Is(err, errExitSetup):
// exit setup without questions
return
case err == nil:
return
default:
logger.Logger.Fatal("Failed to run setup", "err", err)
}
}

View File

@ -23,7 +23,7 @@ import (
var errExitSetup = errors.New("exit setup") var errExitSetup = errors.New("exit setup")
func trySetup(wd string) error { func runSetup(wd string) error {
// ask about running the setup steps // ask about running the setup steps
createFile := false createFile := false
err := survey.AskOne(&survey.Confirm{Message: fmt.Sprintf("Create Orchid config files in this directory: '%s'?", wd)}, &createFile) err := survey.AskOne(&survey.Confirm{Message: fmt.Sprintf("Create Orchid config files in this directory: '%s'?", wd)}, &createFile)

View File

@ -3,12 +3,15 @@ package database
import ( import (
"context" "context"
"database/sql" "database/sql"
"errors"
) )
var errMissingSqlDB = errors.New("cannot open transaction without sql.DB")
func (q *Queries) UseTx(ctx context.Context, cb func(tx *Queries) error) error { func (q *Queries) UseTx(ctx context.Context, cb func(tx *Queries) error) error {
sqlDB, ok := q.db.(*sql.DB) sqlDB, ok := q.db.(*sql.DB)
if !ok { if !ok {
panic("cannot open transaction without sql.DB") return errMissingSqlDB
} }
tx, err := sqlDB.BeginTx(ctx, nil) tx, err := sqlDB.BeginTx(ctx, nil)
if err != nil { if err != nil {